Как запросить разрешение администратора при запуске программы?
Мне нужно, чтобы мое программное обеспечение могло работать как администратор в Windows Vista (если кто-то запускает его без административных разрешений, он рухнет).
при запуске другого программного обеспечения, я видел приглашение от системы, как "это программное обеспечение будет работать от имени администратора. вы хотите продолжить?"когда приложение пыталось получить административные привилегии.
Как запросить права администратора при запуске приложения c# в Windows Vista?
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>
для F# Visual Studio 2013, включая файл манифеста, который запрашивает права администратора с помощью компилятора FSharp
/win32manifest
флаг следующим образом работал для меня. Итак, учитывая выход проекта с именем " приложение.EXE-файл"
создайте файл со следующим содержимым (для удобства можно добавить файл к проекту. Убедитесь, что это
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>
редактировать диалог проекта построить панель
Other flags:
поле ввода для включения следующего:/win32manifest:<ApplicationManifestFile>
. Например, в этом случае/win32manifest:App.Exe.manifest
.