Como posso saber se um processo está sendo executado com permissões de administrador?

43

Estou usando o Windows Vista, com o UAC ativado. Eu instalei um aplicativo e o instalador exigia privilégios de administrador. O instalador então iniciou o aplicativo. Gostaria de saber se o aplicativo continua a ser executado com privilégios de administrador.

Eu já experimentei o Gerenciador de Tarefas do Windows e o Process Explorer, e nem aparece para mostrar essas informações.

    
por Tim 23.11.2009 / 21:24

4 respostas

40

No Process Explorer , clique duas vezes no processo para abrir suas propriedades. Vá para a guia Segurança . Na lista de grupos, encontre BUILTIN \ Administrators e observe o que está escrito na coluna Flags .

Negar = não elevado (não administrador)

Proprietário=Elevado(éadmin)

    
por 23.11.2009 / 23:58
35

No Process Explorer, você pode alterar as colunas exibidas e adicionar a coluna "Nível de integridade" na guia "Imagem de processo":

Este é aparentemente o termo técnico para o que é alterado quando você executa um processo com privilégios de administrador. Se você executar o Process Explorer como um administrador, ele mostrará processos comuns como nível de integridade 'médio' e processos elevados como 'alto'.

Observe que, se você executar o Process Explorer como um usuário comum, ele mostrará os processos que têm privilégios de administrador com uma entrada em branco na coluna de nível de integridade.

    
por 23.11.2009 / 22:04
1

Atualização com o SO: O Monitor de Recursos, que acredito estar incluído no Windows 7 e no Windows 10 (não tenho certeza sobre o Vista), tem uma coluna opcional 'Elevado' na lista de processos da guia CPU que parece ser bastante precisa.

    
por 25.09.2016 / 16:01
0

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 .

    
por 14.04.2016 / 18:17