Запрос привилегий администратора во время выполнения
Как запросить права администратора во время выполнения, чтобы пользователю было предложено разрешить или запретить его?
2 ответа
Эта информация записана в манифесте exe-файла. Вы должны использовать requestedExecutionLevel
поле (но не уверен насчет этого - попробуйте установить его в highestAvailable
и посмотрим, сделает ли это то, что вам нужно). См., Например, здесь для получения дополнительной информации (несколько более старая статья, но все еще действующая): http://blogs.msdn.com/b/cjacks/archive/2006/09/08/exploring-manifests-part-2-default-namespaces-and-uac-manifests-in-windows-vista.aspx
В Visual Studio есть инструменты, которые позволяют встроить собственный манифест или даже просто отредактировать его. Также есть инструмент, написанный на Perl ( http://metacpan.org/pod/Win32::Exe::Manifest).
РЕДАКТИРОВАТЬ: см. Эту статью для получения дополнительной информации: http://www.codeproject.com/Articles/66259/Requesting-Admin-Approval-at-Application-Start.aspx
Если вы хотите получить ответ в виде кнопки (например, "показать процессы для всех пользователей" в диспетчере задач), вам необходимо перезапустить приложение, используя следующий метод
ShellExecute(0,L"runas",exepath,0,0,SW_SHOWNORMAL);