从Windows API获取计算机的域名

Jes*_*dez 4 c++ winapi

在我的应用程序中,我需要知道计算机是否是域的主域控制器,因此我需要知道计算机的域以调用NetGetDCName函数.

谢谢.

编辑:该问题与DCOM身份验证有关,因此如果我需要使用计算机的本地身份验证数据库,我需要知道在PDC或COMPUTER\USERNAME的情况下使用DOMAIN\USERNAME的域.

小智 13

NetWkstaGetInfo()函数返回计算机的域名或工作组,因此不是确定计算机是否是域成员的可靠方法.

GetComputerNameEx()功能将与ComputerNameDnsDomain参数一起使用,如下所示.如果计算机位于工作组中,或者域名的DNS名称,则返回空字符串:

DWORD bufSize = MAX_PATH;
TCHAR domainNameBuf[ MAX_PATH ];

GetComputerNameEx( ComputerNameDnsDomain, domainNameBuf, &bufSize );
Run Code Online (Sandbox Code Playgroud)


i_a*_*orf 7

我会考虑使用NetWkstaGetInfo()并传递本地计算机名称是第一个参数.

#include <Lmwksta.h>
#include <StrSafe.h>

WCHAR domain_name[256];
WKSTA_INFO_100 info = {0};
if (NERR_Success == NetWkstaGetInfo(L"THIS-COMPUTER", 100, &info) && 
    SUCCEEDED(StringCchCopy(domain_name, ARRAYSIZE(domain_name), info.wki100_langroup))) {
    // use domain_name here...
}
Run Code Online (Sandbox Code Playgroud)