我想像尝试过的那样通过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/

10-11 17:44