Se você preferir usar ferramentas de linha de comando, o utilitário Accesschk do Sys Sysinternals suite pode ser usado para verificar se um processo está sendo executado com permissões de administrador.
Os seguintes sinalizadores são úteis para essa finalidade:
-
A opção -p
(process) aceita o nome ou o PID de um processo em execução.
-
A opção -v
(verbose) imprime o Nível de integridade do Windows
-
A opção -q
(silenciosa) impede que as informações de versão sejam impressas.
-
A opção -f
(full) também pode ser usada para fornecer ainda mais informações sobre o (s) processo (s) (detalhes do token de segurança de usuários, grupos e privilégios), mas esse nível de detalhes adicionais não é necessário verificar privilégios elevados.
Exemplo
Relacione os privilégios de todos os processos cmd
em execução:
> accesschk.exe -vqp cmd
[5576] cmd.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW ICS\Anthony
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
[8224] cmd.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW ICS\Anthony
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
Error opening [6636] cmd.exe:
Access is denied.
Aqui, podemos ver que existem três processos cmd
que iniciei. Os dois primeiros têm um nível Mandatory (Integrity) Médio e são mostrados como sendo executados na minha conta de domínio, indicando que esses processos foram iniciados sem privilégios de administrador.
No entanto, o último processo (PID 6636) foi iniciado com permissões elevadas para que meu comando não privilegiado não consiga ler informações sobre esse processo. A execução com permissões elevadas accesschk
e a especificação explícita de seu PID imprime as seguintes informações:
> accesschk.exe -vqp 6636
[6636] cmd.exe
High Mandatory Level [No-Write-Up, No-Read-Up]
RW BUILTIN\Administrators
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
Agora, podemos ver que o nível de integridade é alto e que esse processo está sendo executado no grupo de segurança interno Administrators
.