2009-11-23 19 views
5

Od czasu wydania Vista &, niektóre z moich aplikacji .NET zaczęły wyrzucać wyjątki bezpieczeństwa.Uruchom aplikację .NET jako administrator

Zauważyłem, że niektóre aplikacje (tj. Mój program antywirusowy, panel sterowania) mają małą osłonę i kiedy uruchomię te aplikacje, uprawnienia administratora są automatycznie wymagane ode mnie przez system Windows.

Wiem, że jako użytkownik mogę ustawić, aby aplikacja działała jako administrator, ale to nie wystarczy, ponieważ gdyby aplikacja działała bez uprawnień, spowodowałaby awarię na komputerach moich użytkowników.

Czy istnieje sposób powiadamiania systemu Windows (programowo) Chcę, aby aplikacja działała z uprawnieniami administratora?

Odpowiedz

16

Załóż manifestu aplikacji, ustaw requestedExecutionLevel do requireAdminstrator:

Przykład (generowane przez VS podczas dodawania aplikacji Manifest):

<?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"> 
     <!-- UAC Manifest Options 
      If you want to change the Windows User Account Control level replace the 
      requestedExecutionLevel node with one of the following. 

     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

      If you want to utilize File and Registry Virtualization for backward 
      compatibility then delete the requestedExecutionLevel node. 
     --> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</asmv1:assembly> 

Jeśli dodać do tego Visual projekcie aplikacji Studio, to zostaną wbudowane w twój zespół podczas kompilacji.

Powiązane problemy