ADsOpenObject 函数 (adshlp.h)
ADsOpenObject 函数使用显式用户名和密码凭据绑定到 ADSI 对象。ADsOpenObject 是 IADsOpenDSObject 的包装函数,等效于 IADsOpenDSObject::OpenDsObject 方法。
语法
HRESULT ADsOpenObject(
[in] LPCWSTR lpszPathName,
[in] LPCWSTR lpszUserName,
[in] LPCWSTR lpszPassword,
[in] DWORD dwReserved,
[in] REFIID riid,
[out] void **ppObject
);
参数
[in] lpszPathName
类型: LPCWSTR
以 null 结尾的 Unicode 字符串,指定 ADSI 对象的 ADsPath。 有关此参数绑定字符串的详细信息和代码示例,请参阅 LDAP ADsPath 和 WinNT ADsPath。
[in] lpszUserName
类型: LPCWSTR
以 null 结尾的 Unicode 字符串,指定要提供给目录服务以用于凭据的用户名。 此字符串应始终采用“<domain\><user name>”格式,以避免歧义。 例如,如果 DomainA 和 DomainB 具有信任关系,并且两个域都有一个名称为“user1”的用户,则无法预测哪个域 ADsOpenObject 将用于验证“user1”。
[in] lpszPassword
类型: LPCWSTR
以 null 结尾的 Unicode 字符串,指定要提供给目录服务以用于凭据的密码。
[in] dwReserved
类型:DWORD
用于定义绑定选项的特定于提供程序的身份验证标志。 有关详细信息,请参阅 ADS_AUTHENTICATION_ENUM。
[in] riid
类型: REFIID
此对象上请求的接口的接口标识符。
[out] ppObject
类型: VOID**
指向指向所请求接口的指针的指针。
返回值
类型: HRESULT
此方法支持标准 HRESULT 返回值,包括以下内容。
有关详细信息,请参阅 ADSI 错误代码。
注解
此函数不应仅用于验证用户凭据。
C/C++ 客户端调用 ADsOpenObject 帮助程序函数,以使用作为相应目录服务的凭据提供的用户名和密码绑定到 ADSI 对象。 如果 lpszUsername 和 lpszPassword 为 NULL 且 设置了ADS_SECURE_AUTHENTICATION ,则 ADSI 将使用调用线程的安全上下文绑定到对象,该上下文是运行应用程序的用户帐户的安全上下文,或者是调用线程模拟的客户端用户帐户的安全上下文。
传递给 ADsOpenObject 函数的凭据仅用于绑定到的特定对象,不会影响调用线程的安全上下文。 这意味着,在下面的示例中,对 ADsOpenObject 的调用将使用与对 ADsGetObject 的调用不同的凭据。
HRESULT hr;
IADs *padsRoot1;
IADs *padsRoot2;
hr = ADsOpenObject(L"LDAP://rootDSE",
pwszUsername,
pwszPassword,
ADS_SECURE_AUTHENTICATION,
IID_IADs,
(LPVOID*)&padsRoot1);
hr = ADsGetObject(L"LDAP://rootDSE",
IID_IADs,
(LPVOID*)&padsRoot2);
若要使用 WinNT: 提供程序,可以将 lpszUsername 作为以下字符串之一传入:
- 用户帐户的名称,即“jeffsmith”。
- Windows 样式用户名,即“Fabrikam\jeffsmith”。
- 用户帐户的名称,例如“jeffsmith”。 若要单独使用用户名,必须在 dwReserved 参数中仅设置 ADS_SECURE_AUTHENTICATION 标志。
- 以前版本的 Windows 的用户路径,例如“Fabrikam\jeffsmith”。
- 可分辨名称,例如“CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com”。 若要使用 DN,dwReserved 参数必须为零,或者必须包含 ADS_USE_SSL 标志。
- 用户主体名称 (UPN) ,例如“jeffsmith@Fabrikam.com”。 若要使用 UPN,请为目标用户对象的 userPrincipalName 属性分配相应的 UPN 值。
下面的代码示例演示如何使用请求的用户凭据绑定到目录服务对象。
IADs *pObject;
LPWSTR szUsername = NULL;
LPWSTR szPassword = NULL
HRESULT hr;
// Insert code to securely retrieve the user name and password.
hr = ADsOpenObject(L"LDAP://CN=Jeff,DC=Fabrikam,DC=com",
"jeffsmith",
"etercespot",
ADS_SECURE_AUTHENTICATION,
IID_IADs,
(void**) &pObject);
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | adshlp.h |
Library | Activeds.lib |
DLL | Activeds.dll |