Solicitando privilégios de administrador durante o tempo de execução
Pergunta
Como solicito privilégios de administrador durante o tempo de execução para que o usuário receba o prompt para permitir ou desaprová -lo?
Solução
Esta informação é gravada no manifesto do arquivo exe. Você deve usar o requestedExecutionLevel
campo (mas não tenho certeza disso - tente configurá -lo como highestAvailable
e veja se faz o que você precisa). Veja, por exemplo, aqui para obter mais informações (artigo um pouco mais antigo, mas ainda válido): http://blogs.msdn.com/b/cjacks/archive/2006/09/08/exploring-manifests-part-2-default-namespaces-and-uac-manifests em windows-vista.aspx
Existem ferramentas no Visual Studio que permitem incorporar seu próprio manifesto ou até editá -lo. Também há uma ferramenta escrita em Perl ( http://metacpan.org/pod/win32:::ex::manifest ).
EDIT: Veja este artigo para mais informações: http://www.codeproject.com/articles/66259/requesting-admin-approval-at-application-start.aspx
Outras dicas
Se você deseja isso em resposta a um botão (por exemplo, como 'Mostrar processos para todos os usuários' no gerenciador de tarefas), você deve revisar seu aplicativo usando o seguinte método
ShellExecute(0,L"runas",exepath,0,0,SW_SHOWNORMAL);