2010-08-04 2 views
4

Как запросить права администратора во время выполнения, чтобы пользователю было предоставлено приглашение разрешить или запретить его?Запрос прав администратора во время выполнения

+0

Не относится ли это к SuperUser? – hsz

+0

@hsz: не совсем, поскольку OP ищет это в своих программах, используя код. – BoltClock

ответ

0

Эта информация написана в манифесте 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).

EDIT: эту статью для получения дополнительной информации: http://www.codeproject.com/Articles/66259/Requesting-Admin-Approval-at-Application-Start.aspx

+0

Мне не всегда нужны приподнятые привилегии; Я хочу запросить его, когда пользователь нажимает кнопку. – tenfour

+0

О, я вижу, тогда мое редактирование, вероятно, является релевантным. Оставляя ответ здесь, так как кто-то может найти его полезным. – PeterK

1

, если вы хотите его в ответ на кнопки (например, как «шоу-процессов для всех пользователей» в диспетчере задач), вы должны resart приложение с помощью следующий метод

ShellExecute(0,L"runas",exepath,0,0,SW_SHOWNORMAL); 
+0

Я не думаю, что во время выполнения можно изменить уровень выполнения; моим решением было действительно перезапустить приложение с повышением. Благодарю. – tenfour

Смежные вопросы