Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

Поместите этот XML в файл с именем yourexename.exe.manifest:

<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>

Ответ 4

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

  • Создайте файл со следующим содержимым (для удобства вы можете добавить файл к проекту. Убедитесь, что это Build Action None' and Копировать в вывод... is Не копировать . By convention such a file is named App.Exe.manifest`. Если вам требуется 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>
    
  • Отредактируйте панель ввода диалога диалога Other flags:, чтобы включить следующее: /win32manifest:<ApplicationManifestFile>. Например, в этом случае /win32manifest:App.Exe.manifest.