为什么 %USERDOMAIN% 对于 SYSTEM 用户来说不是“NT AUTHORITY”?

为什么 %USERDOMAIN% 对于 SYSTEM 用户来说不是“NT AUTHORITY”?

运行以下命令

set USERDOMAIN
set USERNAME

在 Windows 服务中将返回

USERDOMAIN=MY_CORPORATE_DOMAIN
USERNAME=SYSTEM

但是我的服务在“NT AUTHORITY\SYSTEM”中运行。

我的问题是:

  1. 为什么USERDOMAIN是“MY_CORPORATE_DOMAIN”而不是“NT AUTHORITY”?

  2. 如果我想taskkill按如下所示运行以终止当前用户下的进程。

    • 它无法在 SYSTEM 用户中正确运行,因为用户域返回 MY_CORPORATE_DOMAIN,而它应该返回 NT AUTHORITY。

我该如何重写该命令?

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

答案1

在域中,SYSTEM用户在某些情况下会使用 Active Directory 计算机帐户的凭据,这就是其中一种情况。计算机也有帐户;它们的 SAM 名称只是计算机名称$末尾带有一个附加项。因此,域中命名的CATACLYSM计算机INFERNOINFERNO\CATACLYSM$响应echo %userdomain%\%username%

如果您想要获取NT AUTHORITY\SYSTEM以 运行的程序SYSTEM,请使用whoami实用程序。遗憾的是,Windows 批处理中没有一种好的方法可以将命令的输出放入变量中。Stack Overflow 上的这个答案建议你做这样的事情:

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

然后您就可以使用%currentuser%代替%userdomain%\%username%

相关内容