ADSI(ADsOpenObject)始终绑定到特定域和特定用户

时间:2014-10-23 06:49:19

标签: c++ visual-c++ ldap adsi

目前我正在使用现有的vc ++ dll,它使用ADsOpenObject方法绑定域详细信息。每当我执行代码时,它总是指向特定的域,如'picTest.com',对于特定的用户,无论是用户还是域,它总是绑定到同一个域和用户。以下是代码段:

hr = ADsOpenObject(szBindPath,
                          NULL,
                         NULL,
                         ADS_SECURE_AUTHENTICATION, // Use Secure Authentication
                         IID_IADs,                   (void**)&pObject);

以上代码非常简单,我相信域和用户在某处配置。我找了注册表和环境变量的任何条目,没有发现任何线索。

1 个答案:

答案 0 :(得分:0)

如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。