Возможно ли, чтобы исполняемый файл запрашивал права администратора? (Windows 7)
Я разрабатываю программу диска раздела, и для меня читать \\\\.\\PhysicalDrive0
мне нужны права администратора.
Мне интересно, возможно ли во время выполнения программа получить права администратора? Есть ли какой-либо выигрыш для этого?
Я хочу сделать это, потому что хочу, чтобы программа выполнялась с правами администратора только тогда, когда она читает/записывает диск. По соображениям безопасности я не хочу, чтобы программа выполняла все время с правами администратора, потому что кто-то мог найти ошибку (например, переполнение стека или кучи) в каком-то модуле и выполнить произвольные команды как adm.
Ответы
Ответ 1
Вы не можете получить повышенные привилегии после запуска процесса. Ваши варианты:
- Поместите часть приложения, требующую повышенных привилегий, в отдельный процесс и проявите это с помощью
requireAdministrator
.
- Запустите часть приложения, для которой требуются повышенные привилегии как COM-объект вне кода.
Ответ 2
Я никогда не видел пути перехода прав после того, как процесс начал выполняться. Единственный способ, которым я знаю, - это создать процесс как привилегированный.
Я с нетерпением жду других ответов, если есть другой способ.
(обновление)
Статья Научите ваши приложения хорошо играть с Windows Vista Контроль учетных записей пользователей (примерно на полпути вниз) подтверждает, что права администратора могут предоставляться только при создании процесса время.
Ответ 3
Вам нужно внедрить манифест с флагом requireAdministrator
http://msdn.microsoft.com/en-us/library/bb756929.aspx
Ответ 4
Project Propeties (Alt + Enter) ->
Файл компоновщика ->
Файл манифеста
->
Уровень выполнения UAC (в VS2015, в 2010 году он похож) ->
requireAdministrator или maximumAvailable
Изменить: Кроме того, если он обновляет программу, просто введите имя вашей программы, начиная с Update
, и Windows автоматически распознает ее.