IADsUser::ChangePassword 方法 (iads.h)
IADsUser::ChangePassword 方法将用户密码从指定的旧值更改为新值。
语法
HRESULT ChangePassword(
[in] BSTR bstrOldPassword,
[out] BSTR bstrNewPassword
);
参数
[in] bstrOldPassword
包含当前密码的 BSTR 。
[out] bstrNewPassword
包含新密码的 BSTR 。
返回值
此方法支持标准返回值,包括S_OK。 有关详细信息和其他返回值,请参阅 ADSI 错误代码。
注解
IADsUser::ChangePassword 的功能类似于 IADsUser::SetPassword ,因为它将使用三种方法之一来尝试更改密码。 最初,如果与服务器建立了安全的 SSL 连接,LDAP 提供程序将尝试 LDAP 更改密码操作。 如果此尝试失败,LDAP 提供程序接下来将尝试使用 Kerberos (请参阅 IADsUser::SetPassword ,了解在 Windows 上使用跨林身份验证) 可能导致的一些问题,如果此操作也失败,它将最终调用特定于 Active Directory 的网络管理 API NetUserChangePassword。
在 Active Directory 中,调用方必须具有 “更改密码 ”扩展控制访问权限才能使用此方法更改密码。
示例
下面的代码示例演示如何更改用户密码。
Dim usr As IADsUser
Dim szOldPass As String
Dim szNewPass As String
On Error GoTo Cleanup
Set usr = GetObject("WinNT://Fabrikam/JeffSmith,user")
' Add code to securely retrieve the old and new password.
usr.ChangePassword szOldPass, szNewPass
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set usr = Nothing
下面的代码示例演示如何更改用户密码。
HRESULT ChangePassword(
IADsUser *pUser,
LPWSTR oldPasswd,
LPWSTR newPasswd)
{
HRESULT hr=S_OK;
if(!pUser) { return E_FAIL;}
hr = pUser->ChangePassword(oldPasswd, newPasswd);
printf("User password has been changed");
return hr;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | iads.h |
DLL | Activeds.dll |