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:
- Aaron Margosis, “The Non-Admin blog - running with least privilege on the desktop”: http://blogs.msdn.com/aaron_margosis/
- How To Develop Code As A Non Admin: http://pluralsight.com/wiki/default.aspx/Keith.GuideBook/HowToDevelopCodeAsANonAdmin.html
- Developing Software in Visual Studio .NET with Non-Administrative Privileges: http://msdn2.microsoft.com/en-us/library/aa289173(VS.71).aspx
- Remote Debugging without domain accounts: http://blogs.msdn.com/greggm/archive/2004/10/04/237519.aspx
- Writing Secure Code, 2nd Edition (Michael Howard): http://www.amazon.com/Writing-Secure-Second-Michael-Howard/dp/0735617228/ref=pd_bbs_sr_1/103-5858527-5951833?ie=UTF8&s=books&qid=1179734950&sr=8-1
Sviluppare come LUA per Vista:
- MSDN Webcast: Best Practices for User Account Control in Windows Vista (Level 200): http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-US&EventID=1032314334&CountryCode=US
- The Windows Vista Developer Story: Windows Vista Application Development Requirements for User Account Control (UAC): http://msdn2.microsoft.com/en-us/library/aa905330.aspx
- Best Practices For User Account Control: http://download.microsoft.com/download/5/0/f/50fae3a2-84d5-4089-a81b-5f84761c8790/best_practices_for_user_account_control.ppt
- Visual Studio 2005 on Windows Vista Issue List (elevated user): http://msdn2.microsoft.com/en-us/vstudio/aa964140.aspx
- Visual Studio 2005 on Windows Vista Issue List (normal user): http://msdn2.microsoft.com/en-us/vstudio/aa972193.aspx
- Writing Secure Code for Windows Vista (Michael Howard): http://www.amazon.com/Writing-Secure-Code-Windows-Vista/dp/0735623937/ref=pd_bbs_sr_2/103-5858527-5951833?ie=UTF8&s=books&qid=1179734950&sr=8-2
-Enjoy!