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:
In automatico nel progetto vi troverete selezionato il manifest creato:
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>