我尝试使用以下代码获取运行为Network Service
的服务的计算机主体名称。
BOOLEAN bError = GetUserNameEx(NameUserPrincipal, buffer, &buf_len);
由于我的计算机的域名为Service-Windows@example.com
,因此我预计buffer
中的结果是相同的。
但是,返回的服务主体名称为WIN-SC4RKQUKM4D@example.com
。
我确定我已更改计算机并将其添加到域example.com
。
我不知道异常的主要名称。可能是什么问题? 任何提示都将受到高度赞赏。
更新
我正在域控制器上运行该服务,不知道这是否会干扰结果。
谢谢你,最诚挚的问候!
答案 0 :(得分:1)
在查找网络服务用户帐户的用户名时,我不希望获得计算机名称。如果您使用LookupAccountSid查找,我希望看到NT AUTHORITy\NETWORK SERVICE
:
#include <windows.h>
#include <iostream>
int main(){
SID nss;
DWORD size = sizeof(nss);
CreateWellKnownSid(WinNetworkServiceSid, NULL, &nss, &size);
char name[256];
DWORD n_size = sizeof(name);
char domain[256];
DWORD d_size = sizeof(domain);
SID_NAME_USE type;
LookupAccountSid(NULL, &nss, name, &n_size, domain, &d_size, &type);
std::cout << domain << "\\" << name << "\n";
return 0;
}
[这就是我得到的]。
我猜你看到的用户名是自动创建的用户帐户的一部分。在你将名字改为其他东西之后很久就有一些原始名称的残余。我也一次又一次地看到它们,虽然从未见过足够可靠的模式来预测它们何时能够或不会出现(并且从未找到任何方式来确定它们是否完全消失)。