MSChapSrvChangePassword2 函数 (mschapp.h)

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) 密码哈希作为加密密钥。

注意使用 RFC 2433 A.11 节中定义的 NewPasswordEncryptedWithOldNtPasswordHash () 函数来计算 NewPasswordEncryptedWithOldNt 的密码
 

[in] OldNtOwfPasswordEncryptedWithNewNt

指向 ENCRYPTED_NT_OWF_PASSWORD 结构的指针,该结构包含使用新的 NT OWF 密码哈希作为加密密钥加密的旧 NT OWF 密码哈希。

[in] LmPresent

一个 BOOLEAN,指定当前 Lan Manager (LM) 还是 NT OWF 密码哈希用作加密密钥,以生成 NewPasswordEncryptedWithOldNtOldNtOwfPasswordEncryptedWithNewNt 密码。 如果 为 TRUE,则使用 LM OWF 密码哈希,而不是 NT OWF 密码哈希。

[in] NewPasswordEncryptedWithOldLm

指向 SAMPR_ENCRYPTED_USER_PASSWORD 结构的指针,该结构包含使用当前 LM OWF 密码哈希加密的新明文密码。

注意使用 RFC 2433 A.15 节中定义的 NewPasswordEncryptedWithOldLmPasswordHash () 函数来计算 NewPasswordEncryptedWithOldLm 的密码
 

[in] OldLmOwfPasswordEncryptedWithNewLmOrNt

指向 ENCRYPTED_LM_OWF_PASSWORD 结构的指针,该结构包含使用新的 LM OWF 密码哈希加密的当前 LM OWF 密码哈希。

返回值

如果函数成功,则返回值为 STATUS_SUCCESS (0x00000000)

如果函数失败,则返回值是 ntstatus.h 中的以下错误代码之一。

返回代码/值 说明
STATUS_ACCESS_DENIED
0xC0000022
调用应用程序没有完成操作的适当权限。
STATUS_INVALID_HANDLE
0xC0000008
指定的服务器或用户名无效。
STATUS_ILL_FORMED_PASSWORD
0xC000006B
新密码格式不正确,例如,它包含无法从键盘输入的字符。
STATUS_PASSWORD_RESTRICTION
0xC000006C
限制可防止更改密码。 可能的限制包括允许更改密码的频率的时间限制或对提供的密码的长度限制。 如果新密码与帐户的最近历史记录日志中的密码匹配,也会返回此错误。 安全管理员指定有多少最近使用的密码不能重复使用。 这些记录保存在密码最近的历史记录日志中。
STATUS_WRONG_PASSWORD
0xC000006A
旧密码参数与用户的当前密码不匹配。
STATUS_INVALID_DOMAIN_STATE
0xC00000DD
域控制器未处于启用状态。 必须为此操作启用域控制器。
STATUS_INVALID_DOMAIN_ROLE
0xC00000DE
域控制器以不正确的角色提供服务以执行请求的操作。 该操作只能由主域控制器执行。

注解

仅当用户具有访问权限时,此函数才允许用户更改自己的密码: USER_CHANGE_PASSWORD

如果更改密码的尝试与管理密码限制冲突,此函数将失败并 STATUS_PASSWORD_RESTRICTION

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 mschapp.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

MS-CHAP 密码管理功能

MSChapSrvChangePassword