IADsUser::SetPassword 方法 (iads.h)
IADsUser::SetPassword 方法将用户密码设置为指定值。 对于 LDAP 提供程序,必须先使用 IADs::SetInfo 创建用户帐户并将其存储在基础目录中,然后才能调用 IADsUser::SetPassword 。
但是,使用 WinNT 提供程序,可以在调用 SetInfo 之前在新创建的用户对象上设置密码。 这可确保在创建用户帐户之前创建符合系统密码策略的密码。
语法
HRESULT SetPassword(
BSTR NewPassword
);
parameters
NewPassword
包含新密码的 BSTR 。
返回值
此方法支持标准返回值,包括 S_OK。 有关其他返回值,请参阅 ADSI 错误代码。
注解
Active Directory 的 LDAP 提供程序使用三个进程之一来设置密码;第三方 LDAP 目录(如 iPlanet)不使用此密码身份验证过程。 方法可能因网络配置而异。 尝试设置密码按以下顺序发生:
- 首先,LDAP 提供程序尝试通过 128 位 SSL 连接使用 LDAP。 要使 LDAP SSL 成功运行,LDAP 服务器必须安装相应的服务器身份验证证书,并且运行 ADSI 代码的客户端必须信任颁发这些证书的颁发机构。 服务器和客户端都必须支持 128 位加密。
- 其次,如果 SSL 连接不成功,LDAP 提供程序将尝试使用 Kerberos。
- 第三,如果 Kerberos 不成功,LDAP 提供程序将尝试 NetUserSetInfo API 调用。 在以前的版本中,ADSI 在运行线程的安全上下文中调用 NetUserSetInfo ,而不是调用 IADsOpenDSObject::OpenDSObject 或 ADsOpenObject 中指定的安全上下文。 在更高版本中,更改了此设置,以便 ADSI LDAP 提供程序在调用 NetUserSetInfo 时模拟 在 OpenDSObject 调用中指定的用户。
示例
下面的代码示例演示如何设置用户密码(如果有权设置)。
Dim usr As IADsUser
Dim szPassword As String
On Error GoTo Cleanup
' Add code to securely get the password.
Set usr = GetObject("LDAP://MyLdapSvr/CN=JeffSmith,DC=Fabrikam")
usr.SetPassword szPassword
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set usr = Nothing
下面的代码示例演示如何设置用户密码(如果有权设置)。
HRESULT SetPassword(IADsUser *pUser, BSTR password)
{
HRESULT hr=S_OK;
if(!pUser) { return E_FAIL;}
hr = pUser->SetPassword(password);
if (hr == S_OK) printf("User password has been set");
pUser->Release();
return hr;
}
要求
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | iads.h |
DLL | Activeds.dll |