Мне нужно, чтобы мое программное обеспечение могло запускаться от имени администратора в Windows Vista (если кто-то запустит его без прав администратора, оно выйдет из строя).
При запуске другого программного обеспечения я видел запрос системы вроде «это программное обеспечение будет запускаться от имени администратора. Вы хотите продолжить?» когда приложение пыталось получить административные привилегии.
Как запросить административные привилегии при запуске приложения c # в Windows Vista?
c#
windows
windows-7
windows-vista
Арсен Захрай
источник
источник
Ответы:
Добавьте в свой файл манифеста следующее:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Вы также можете использовать
highestAvailable
для уровня.Посмотрите здесь о встраивании файлов манифеста:
http://msdn.microsoft.com/en-us/library/bb756929.aspx
PS: Если у вас нет файла манифеста, вы можете легко добавить новый:
В добавленном файле уже будет указанная выше часть, просто измените уровень на
requireAdministrator
сasInvoker
источник
Поместите этот 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>
источник
Вам нужно использовать
requestedExecutionLevel
токен в манифесте:http://www.developerfusion.com/code/7987/making-a-net-app-run-on-vista-with-administrator-priviledges/
источник
Для F # Visual Studio 2013, включая файл манифеста, который запрашивает повышение прав администратора с использованием флага компилятора FSharp,
/win32manifest
как показано ниже, у меня сработало. Итак, учитывая результат проекта с именем "App.Exe"Создайте файл со следующим содержимым (для удобства вы можете добавить файл в проект. Убедитесь в том, что это
Build Action
являетсяNone' and
копирование на выход ...is
Не копировать. By convention such a file is named
App.Exe.manifest`. Если вам требуется UIAccess (User Interface), узел должны иметь строгое название.<?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
.источник