В настоящее время я работаю над существующим vc ++ dll, который использует ADsOpenObject
способ связать детали домена. Всякий раз, когда я выполняю код, он всегда указывает на определенный домен, такой как «picTest.com», и для конкретного пользователя, кто бы ни был пользователем или каким бы ни был домен, он всегда связывается с одним и тем же доменом и пользователем. Ниже приведен фрагмент кода:
hr = ADsOpenObject(szBindPath,
NULL,
NULL,
ADS_SECURE_AUTHENTICATION, // Use Secure Authentication
IID_IADs, (void**)&pObject);
Приведенный выше код очень прост, я считаю, что домен и пользователь настроен где-то. Я искал любую запись для реестра и переменной среды, не нашел никакой подсказки.
Как указано в статье MSDN о ADsOpenObject:
Клиент C / C ++ вызывает вспомогательную функцию ADsOpenObject для привязки к
Объект ADSI, используя имя пользователя и пароль, предоставленные в качестве учетных данных
для соответствующей службы каталогов. Если lpszUsername и
lpszPassword имеют значение NULL и ADS_SECURE_AUTHENTICATION установлено, ADSI связывается
к объекту, используя контекст безопасности вызывающего потока, который
это либо контекст безопасности учетной записи пользователя, под которой
приложение или клиентская учетная запись пользователя, что вызывающий
нить подражает.
Другими словами. потому что ты указал NULL
для пользователя и пароля текущий пользователь, выполняющий программное обеспечение, используется для привязки. И потому что вы не указали конкретный контроллер домена в вашем пути LDAP (как ldap://DC01.example.local/CN=something,DC=example,dc=local
) он связывается с DC по своему выбору.