Как запросить разрешение администратора при запуске программы?
Мне нужно, чтобы мое программное обеспечение могло работать как администратор в 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.