2

Выполнение следующей команды

set USERDOMAIN
set USERNAME

в службу Windows вернется

USERDOMAIN=MY_CORPORATE_DOMAIN
USERNAME=SYSTEM

Но мой сервис работал в "NT AUTHORITY\SYSTEM".

Мои вопросы:

  1. Почему USERDOMAIN означает "MY_CORPORATE_DOMAIN", а не "NT AUTHORITY"?

  2. Если я хочу запустить taskkill как показано ниже, чтобы убить мой процесс под текущим пользователем.

    • Он не будет корректно работать в SYSTEM пользователя, потому что userdomain возвращает MY_CORPORATE_DOMAIN, который должен возвращать NT AUTHORITY.

Как я могу переписать команду?

 taskkill /F /FI "USERNAME eq %userdomain%\%username%" /IM my_process.exe 

1 ответ1

0

В домене пользователь SYSTEM использует учетные данные учетной записи компьютера Active Directory при некоторых обстоятельствах, и это один из них. У компьютеров тоже есть аккаунты; их имена SAM - просто имя компьютера с дополнительным $ в конце. Поэтому компьютер с именем CATACLYSM в домене INFERNO получит INFERNO\CATACLYSM$ в ответ на echo %userdomain%\%username% .

Если вы хотите получить NT AUTHORITY\SYSTEM для программ, работающих как SYSTEM , используйте утилиту whoami . К сожалению, в пакете Windows нет хорошего способа поместить вывод команды в переменную. Этот ответ переполнения стека предлагает вам сделать что-то вроде этого:

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

После этого вы сможете использовать %currentuser% вместо %userdomain%\%username% .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .