A Ovest Di Paperino

Welcome to the dark side.

Sviluppare come LUA

Vista ha "sdoganato" il concetto di UAC nel mondo Windows e questo ha creato qualche grattacapo di compatibilità con applicazioni abituate a quella "bella vita" di poter fare tutto quello che volevano; esempio classico: Emule che scrive un po' di tutto in \Program Files\Emule. Uno dei consigli più utili a questo riguardo nei confronti degli sviluppatori è di lanciare l'ambiente di sviluppo come utenti normali: questo permette di replicare, sulla macchina dello sviluppatore, l'ambiente target su cui il prodotto deve girare. Il grosso problema è che talune attività importanti (come fare debugging, registrare assembly nella GAC, installare applicazioni, creare directory virtuali IIS, ecc.) richiedono permessi di amministratore.

Ravanando in giro, grazie ad un collega volenteroso nella sua ricerca personale, ho trovato un po' di materiale che può tornare utile a tutti gli sviluppatori Windows.

1. Usare account non privilegiati sempre e ricorrere agli utenti admin solo per i task necessari (facilissimo con Vista, un po' complicato con Windows 2000/XP/2003).

2. Come fare debug di applicazioni web o web service: per fare il debugging di processi che girano in un security context diverso (es: IIS che gira come NetworkService) è necessario avere privilegi di Debug (che sono pressocché simili a quelli di amministatore). Un paio di soluzioni:

  • far girare IIS sotto le proprie credenziali (non-admin ovviamente!). Questo significa però che l'ambiente di sviluppo non sarà lo stesso di quello su cui girerà la web-app finita.
  • far girare un debugger come admin, a discapito dell'integrazione con Visual Studio (VS)
  • far girare IIS su un server diverso (magari virtuale) e lanciare VS con la seguente riga di comando:
    RUNAS.EXE /NETONLY /U:SERVER\ADMINISTRATOR devenv.exe
    (lo switch NETONLY indica a RUNAS di usare le credenziali di amministratore solo per la rete; l'istanza locale di VS girerà come utente normale non-admin)

3. se si sta sviluppando su Windows 2003 un'idea interessante è quella di loggarsi come utente normale e per i compiti amministrativi aprire un remote desktop verso la stessa macchina.

Infine un po' di link che tornano sempre utili (in inglese)

Sviluppare come LUA in generale:

Sviluppare come LUA per Vista:

-Enjoy!