[C#] [.NET] Как сделать так, чтобы обычная программа запускалась с правами администратора под Windows Vista (Windows 7)

Как сделать так, чтобы обычная программа запускалась с правами администратора под Windows Vista (Windows 7)

 

Допустим у нас есть обычное приложение Windows Forms Application, написанное C#, но нам  требуется выполнение каких-нибудь операций с правами администратора.

Для этого нужно создать манифест файл в обычном текстовом редакторе,  например:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="YourApplicationName"
     type="win32"/> 
  <description>Description of your application</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

 

Далее в свойствах проекта  в разделе Build Events-> Post build event command line добавить строчку следующего вида:

"C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\mt.exe" -manifest "$(ProjectDir)yourapplication.manifest" -outputresource:"$(TargetDir)$(TargetName).exe;#1"

где mt.exe – программа Manifest Tool, которая входит в Microsoft SDK. В примере прописан абсолютный путь к mt.exe, его следует заменить на тот который у вас в системе.

 

Если вам не нужен манифест, который создается по умолчанию, его лучше отключить во избежание всяких конфликтов: Свойства проекта -> Application -> Resources -> Manifest

Create application without a manifest

Читайте также: