Как запросить права администратора во время выполнения, чтобы пользователю было предложено разрешить или запретить его?
если вы хотите получить ответ в виде кнопки (например, «показать процессы для всех пользователей» в диспетчере задач), вам необходимо перезапустить приложение, используя следующий метод
ShellExecute(0,L"runas",exepath,0,0,SW_SHOWNORMAL);
Эта информация записана в манифесте 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
requestedExecutionLevel
highestAvailable
В Visual Studio есть инструменты, которые позволяют встраивать собственный манифест или даже просто редактировать его. Также есть инструмент, написанный на Perl (http://metacpan.org/pod/Win32::Exe::Manifest).
РЕДАКТИРОВАТЬ: см. Эту статью для получения дополнительной информации: http://www.codeproject.com/Articles/66259/Requesting-Admin-Approval-at-Application-Start.aspx