Как запрашивать разрешения администратора при запуске программы?
Мне нужно, чтобы мое программное обеспечение могло работать как администратор в Windows Vista (если кто-то запускает его без административных прав, он будет аварийно завершен).
При запуске другого программного обеспечения я видел подсказку системы, например: "это программное обеспечение будет работать как администратор, вы хотите продолжить?" когда приложение пыталось получить административные привилегии.
Как мне запрашивать административные привилегии при запуске приложения С# в Windows Vista?
Ответы
Ответ 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>
Ответ 3
Вам нужно использовать токен requestedExecutionLevel
в манифесте:
http://www.developerfusion.com/code/7987/making-a-net-app-run-on-vista-with-administrator-priviledges/
Ответ 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
.