Запрашивая привилегии администратора во время выполнения
Вопрос
Как мне запросить привилегии администратора во время выполнения, чтобы пользователь дал приглашение, чтобы позволить или запретить его?
Решение
Эта информация написана в манифесте файла EXE. Вы должны использовать requestedExecutionLevel
поле (но не уверена в этом - попробуйте настроить его highestAvailable
и посмотреть, делает ли это то, что вам нужно). См. Например, здесь для получения дополнительной информации (несколько старая статья, но все еще действует): http://blogs.msdn.com/b/cjacks/Archive/2006/09/08/exploring-manifests-part--default-mancepaces-and-waq-manifests-in-windows-vista.aspx.
Есть инструменты в Visual Studio, что позволяет вам встроить собственные проявления или даже просто редактировать его. Также есть инструмент, написанный в Perl ( http://metacpan.org/pod/win32::exe::manifest. ).
Редактировать: См. Эта статья для получения дополнительной информации: http://www.codeProject.com/articles/66259/Requesting-admin-apploval-at-application-start.aspx.
Другие советы
Если вы хотите, чтобы он в ответ на кнопку (например, вроде «показать процессы для всех пользователей» в Task Manager), вы должны передать свое приложение, используя следующий метод
ShellExecute(0,L"runas",exepath,0,0,SW_SHOWNORMAL);