ADsOpenObject - подключение к rootDSE другого домена в той же сети - PullRequest
0 голосов
/ 16 мая 2018

Мне нужно подключиться к 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):

Сервер не работает.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Я установил соединение с rootDSE другого домена в той же сети, используя следующую схему LDAP:

"LDAP://win2k3/rootDSE"

Примечание. NETBIOS Имя моего DC - 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";
}
0 голосов
/ 16 мая 2018

Не удается связаться с контроллером домена. Проверьте сетевое подключение к серверу.

AD может использовать любой из 4 портов:

  • 389: LDAP (незашифрованный) Это значение по умолчанию, если вы ничего не указали
  • 636: LDAP через SSL (зашифрованный)
  • 3268: Глобальный каталог (весь ваш лес)
  • 3269: глобальный каталог по SSL

Вы можете проверить сетевое подключение из PowerShell:

(new-object Net.Sockets.TcpClient).Connect("DC1.domain.com", 389)

Нет вывода означает успех. Если это не удастся, он скажет вам. Если порт 389 не работает, попробуйте другие. Если один из других работает, вы можете указать это в вашем пути LDAP: "LDAP://DC1.domain.com:3268/rootDSE"

...