MSChapSrvChangePassword2 函数更改用户帐户的密码,同时支持相互加密。
语法
DWORD MSChapSrvChangePassword2(
[in] PWSTR ServerName,
[in] PWSTR UserName,
[in] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldNt,
[in] PENCRYPTED_NT_OWF_PASSWORD OldNtOwfPasswordEncryptedWithNewNt,
[in] BOOLEAN LmPresent,
[in] PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
[in] PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewLmOrNt
);
参数
[in] ServerName
指向以 null 结尾的 Unicode 字符串的指针,该字符串指定要在其上运行的服务器 (UNC) 名称的通用命名约定。 如果此参数为 NULL,则函数将在本地计算机上运行。
[in] UserName
指向以 null 结尾的 Unicode 字符串的指针,该字符串指定要更改其密码的用户的名称。
[in] NewPasswordEncryptedWithOldNt
指向 SAMPR_ENCRYPTED_USER_PASSWORD 结构的指针,该结构包含使用当前 NT 单向函数加密的新明文密码, (OWF) 密码哈希作为加密密钥。
[in] OldNtOwfPasswordEncryptedWithNewNt
指向 ENCRYPTED_NT_OWF_PASSWORD 结构的指针,该结构包含使用新的 NT OWF 密码哈希作为加密密钥加密的旧 NT OWF 密码哈希。
[in] LmPresent
一个 BOOLEAN,指定当前 Lan Manager (LM) 还是 NT OWF 密码哈希用作加密密钥,以生成 NewPasswordEncryptedWithOldNt 和 OldNtOwfPasswordEncryptedWithNewNt 密码。 如果 为 TRUE,则使用 LM OWF 密码哈希,而不是 NT OWF 密码哈希。
[in] NewPasswordEncryptedWithOldLm
指向 SAMPR_ENCRYPTED_USER_PASSWORD 结构的指针,该结构包含使用当前 LM OWF 密码哈希加密的新明文密码。
[in] OldLmOwfPasswordEncryptedWithNewLmOrNt
指向 ENCRYPTED_LM_OWF_PASSWORD 结构的指针,该结构包含使用新的 LM OWF 密码哈希加密的当前 LM OWF 密码哈希。
返回值
如果函数成功,则返回值为 STATUS_SUCCESS (0x00000000) 。
如果函数失败,则返回值是 ntstatus.h 中的以下错误代码之一。
返回代码/值 | 说明 |
---|---|
|
调用应用程序没有完成操作的适当权限。 |
|
指定的服务器或用户名无效。 |
|
新密码格式不正确,例如,它包含无法从键盘输入的字符。 |
|
限制可防止更改密码。 可能的限制包括允许更改密码的频率的时间限制或对提供的密码的长度限制。 如果新密码与帐户的最近历史记录日志中的密码匹配,也会返回此错误。 安全管理员指定有多少最近使用的密码不能重复使用。 这些记录保存在密码最近的历史记录日志中。 |
|
旧密码参数与用户的当前密码不匹配。 |
|
域控制器未处于启用状态。 必须为此操作启用域控制器。 |
|
域控制器以不正确的角色提供服务以执行请求的操作。 该操作只能由主域控制器执行。 |
注解
仅当用户具有访问权限时,此函数才允许用户更改自己的密码: USER_CHANGE_PASSWORD。
如果更改密码的尝试与管理密码限制冲突,此函数将失败并 STATUS_PASSWORD_RESTRICTION 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | mschapp.h |
Library | Advapi32.lib |
DLL | Advapi32.dll |