我想像尝试过的那样通过GetComputerObjectName
获取计算机的简单DisplayName:
//Get the buffer size
bRet = GetComputerObjectName(NameDisplay, NULL, & ulSize);
if(!bRet)
{
DWORD dw = 0;
dw = GetLastError();
MessageBox(NULL, TEXT("Could not get the computer name size."), TEXT("Failure."), MB_OK | MB_ICONERROR);
exit(-1);
}
//Create a buffer large enough to contain the display name
pBuffer = new TCHAR[ulSize+1];
//Obtain the computer object name
bRet = GetComputerObjectName(NameDisplay, pBuffer, &ulSize);
if(!bRet)
{
MessageBox(NULL, TEXT("Could not get the computer name."), TEXT("Failure."), MB_OK | MB_ICONERROR);
exit(-1);
}
但是对
GetComputerObjectName
的调用失败,并显示ERROR_CANT_ACCESS_DOMAIN_INFO。我已经尝试启用特权* SE_SECURITY_NAME *和* SE_SYSTEM_PROFILE_NAME *,
但这也不起作用。
有人知道该怎么做吗?
最佳答案
为什么不使用GetComputerNameEx
功能。
尝试以下类似的方法,ULONG sz = 0;
GetComputerNameEx(ComputerNameDnsFullyQualified, NULL,&sz);
cout << "size : " << (int)sz << endl;
它运作良好。我只是在网络上的机器上尝试了您的代码,它对我也很有效。但是这段代码给出了网络中机器的全名。我猜它也可以在独立的机器上工作(就像使用NET command一样)。
关于c++ - 启用使用GetComputerObjectName的访问权限?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11327850/