Por que% USERDOMAIN% não é “NT AUTHORITY” para o usuário SYSTEM?

2

Executando o seguinte comando

set USERDOMAIN
set USERNAME

em um serviço do Windows retornará

USERDOMAIN=MY_CORPORATE_DOMAIN
USERNAME=SYSTEM

Mas meu serviço estava sendo executado em "NT AUTHORITY \ SYSTEM".

Minhas perguntas são:

  1. Por que USERDOMAIN é "MY_CORPORATE_DOMAIN" e não "NT AUTHORITY"?

  2. Se eu quiser executar taskkill como mostrado abaixo para eliminar o processo do usuário atual.

    • Ele não será executado corretamente no usuário do SYSTEM, porque userdomain retorne MY_CORPORATE_DOMAIN, que deve retornar NT AUTHORITY.

Como     posso reescrever o comando?

 taskkill /F /FI "USERNAME eq %userdomain%\%username%" /IM my_process.exe 
    
por Calvin Kwok 12.05.2015 / 07:41

1 resposta

0

Em um domínio, o usuário SYSTEM usa as credenciais da conta do computador do Active Directory em algumas circunstâncias, sendo uma delas. Computadores também têm contas; seus nomes SAM são apenas o nome do computador com um $ extra no final. Portanto, um computador chamado CATACLYSM no domínio INFERNO obteria INFERNO\CATACLYSM$ em resposta a echo %userdomain%\%username% .

Se você deseja obter NT AUTHORITY\SYSTEM para programas em execução como SYSTEM , use o utilitário whoami . Infelizmente, não há um bom caminho no lote do Windows para colocar a saída de um comando em uma variável. Esta resposta de estouro de pilha sugere que você faça algo assim:

whoami > tmp-whoami
set /p currentuser= < tmp-whoami
del tmp-whoami

Você poderá usar %currentuser% no lugar de %userdomain%\%username% .

    
por 19.04.2016 / 16:09