首页 > 解决方案 > ADsOpenObject - 连接到同一网络中另一个域的 rootDSE

问题描述

我需要连接到同一网络中另一个域的 rootDSE。我参考了在这个Microsoft 论坛线程中找到的解决方案。我使用以下代码建立连接。

hr = ADsOpenObject(L"LDAP://DC1.domain.com/rootDSE",
    L"admin",
    L"password",
    ADS_SECURE_AUTHENTICATION,
    IID_IADs,
    (void**)&pObject);

if(!SUCCEEDED(hr)){
    _com_error err(hr);
    LPCTSTR errMsg = err.ErrorMessage();
    std::wcout<<errMsg<<L"\n";
}

我无法连接到 rootDSE,错误消息(errMsg):

服务器无法运行。

标签: visual-c++active-directoryldap

解决方案


我使用以下 LDAP 模式完成了连接到同一网络中另一个域的 rootDSE:

"LDAP://win2k3/rootDSE"

注意:我的 DC 的 NETBIOS 名称是 win2k3。win2k3 属于另一个域,但与我的计算机在同一个网络中。

IADs *pObject;
HRESULT hr;
CoInitialize(NULL);
hr = ADsOpenObject(L"LDAP://<DC-NETBIOS>/rootDSE",
    username,
    password,
    ADS_SECURE_AUTHENTICATION,
    IID_IADs,
    (void**)&pObject);

if (hr == S_OK) printf("\nBind to rootDSE success\n");
else {
    _com_error err(hr);
    LPCTSTR errMsg = err.ErrorMessage();
    std::wcout << L"Hresult: " << errMsg << L"\n";
}

推荐阅读