Una bella comodità che ho subito voluto provare appena terminato di installare VS2008 è quella di embeddare il manifest per richiedere eventuale elevazione dei privilegi in Vista.

Ad esempio la mia applicazione scrive in "C:\" (cosa assolutamente da evitare!!):

using (StreamWriter sw = new StreamWriter(@"C:\test.txt", true)) { sw.WriteLine("Text"); }

In Vista questa operazione richiede diritti da SUPER amministratore.

Per avvertire l'utente che il ns. eseguibile richiederà maggiori permessi è necessario embeddare il manifest, operazione molto semplificata adesso come descrivo sotto (...prima bisognava farlo a manina come avevo scritto tempo fa in questo post).

Aggiungere un nuovo file di tipo "Application Manifest File" come sotto indicato:

AppManifetFile

 

In automatico nel progetto vi troverete selezionato il manifest creato:

ManifestInclude

 

Ora sistemate il manifest indicando il corretto livello:

<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> <!-- UAC Manifest Options <requestedExecutionLevel level="asInvoker" uiAccess="false" /> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> --> </requestedPrivileges> </security> </trustInfo> </asmv1:assembly>