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::OpenDSObjectADsOpenObject 中指定的安全上下文。 在更高版本中,更改了此设置,以便 ADSI LDAP 提供程序在调用 NetUserSetInfo 时模拟 在 OpenDSObject 调用中指定的用户。
在 Active Directory 中,调用方必须具有 重置密码 扩展控制访问权限才能使用此方法设置密码。

示例

下面的代码示例演示如何设置用户密码(如果有权设置)。

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

另请参阅

ADSI 错误代码

IADs::SetInfo

IADsMembers

IADsServiceOperations

IADsUser

IADsUser 属性方法

NetUserSetInfo