Как запросить разрешение администратора при запуске программы?


Мне нужно, чтобы мое программное обеспечение могло работать как администратор в Windows Vista (если кто-то запускает его без административных разрешений, он рухнет).

при запуске другого программного обеспечения, я видел приглашение от системы, как "это программное обеспечение будет работать от имени администратора. вы хотите продолжить?"когда приложение пыталось получить административные привилегии.

Как запросить права администратора при запуске приложения c# в Windows Vista?

4 66

4 ответа:

добавьте в файл манифеста следующее:

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

вы также можете использовать highestAvailable для уровня.

смотрите здесь о внедрении файлов манифеста:

http://msdn.microsoft.com/en-us/library/bb756929.aspx

PS: Если у вас нет файла манифеста, вы можете легко добавить новый:

в Visual Studio щелкните правой кнопкой мыши проект - > добавить элемент - > Выберите файл манифеста приложения ( в разделе Общие для Visual C# пункты)

добавленный файл уже будет иметь вышеуказанную часть, просто измените уровень на requireAdministrator С asInvoker

поместите этот XML в файл с именем yourexename.исполняемый.манифест:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
   <security>
     <requestedPrivileges>
        <requestedExecutionLevel level="highestAvailable" />
     </requestedPrivileges>
   </security>
</trustInfo>
</assembly>

вы должны использовать requestedExecutionLevel маркер в манифесте:

http://www.developerfusion.com/code/7987/making-a-net-app-run-on-vista-with-administrator-priviledges/

для F# Visual Studio 2013, включая файл манифеста, который запрашивает права администратора с помощью компилятора FSharp /win32manifest флаг следующим образом работал для меня. Итак, учитывая выход проекта с именем " приложение.EXE-файл"

  1. создайте файл со следующим содержимым (для удобства можно добавить файл к проекту. Убедитесь, что это Build Action и None' andкопировать в выходной...isне копируйте. By convention such a file is named приложение.Исполняемый.проявляться.` Если вам требуется uiAccess (пользовательский интерфейс), этот сборка должна иметь строгое имя.

    <?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="App" />
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </asmv1:assembly>
    
  2. редактировать диалог проекта построить панель Other flags: поле ввода для включения следующего: /win32manifest:<ApplicationManifestFile>. Например, в этом случае /win32manifest:App.Exe.manifest.