A resposta existente é muito boa. Vou fornecer alguns detalhes técnicos, para quem gosta dessas coisas.
Taskmgr.exe
(in \Windows\System32
) é o programa executado quando você chama o Gerenciador de tarefas. Inspecionando-o com um editor hexadecimal, descobri que seu manifesto é definido requestedExecutionLevel
como highestAvailable
. Isso significa que, se você estiver executando como administrador local, o Gerenciador de tarefas exigirá que você aumente. Você pode demonstrar isso facilmente, configurando o UAC para o nível mais alto e pressionando Ctrl + Shift + Esc para iniciar o Gerenciador de tarefas, observando que ele produz um prompt de elevação. Se o UAC não estiver no nível mais alto, o Gerenciador de tarefas poderá elevar-se silenciosamente, porque é um componente integral do Windows. Em resumo, sim, o Gerenciador de Tarefas é executado como administrador por padrão, quando possível .
highestAvailable
(em oposição a requireAdministrator
) permite que não administradores executem o programa sem que sejam solicitados a elevar, mas é claro que não poderão fazer nada administrativo com ele.
Uma maneira rápida e suja de verificar se um programa está em execução elevado é ativar a coluna de virtualização do UAC na guia Detalhes do Gerenciador de tarefas. Se e somente se a entrada de um processo nessa coluna for Não permitida , ela será elevada. (Os processos administrativos não podem ser redirecionados para compatibilidade.) Você também pode verificar se ele possui privilégios poderosos (por exemplo SeSecurityPrivilege
) usando o Sysinternals Process Explorer .
Em resposta à sua pergunta sobre ainda ter acesso negado a alguns processos, o Windows possui um conceito de processos protegidos que absolutamente não podem ser tocados no modo de usuário, nem mesmo por processos em execução SYSTEM
; a proteção é imposta pelo kernel. Somente serviços essenciais do sistema recebem esse tipo de proteção. Um desses processos é csrss
.