微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Windows 10 中自定义凭据提供程序中的 LOCK 场景 CPUS_UNLOCK_WORKSTATION 条件中更改用户的域密码

如何解决如何在 Windows 10 中自定义凭据提供程序中的 LOCK 场景 CPUS_UNLOCK_WORKSTATION 条件中更改用户的域密码

我正在为 Windows 10 系统编写 C++ 自定义凭据提供程序。 我在cpuS_logoN场景中成功更改域用户密码,当密码在

过期时

ntsstatus == STATUS_PASSWORD_MUST_CHANGE

情况发生在

凭据:: ReportResult()

但是在LOCK场景,即cpuS_UNLOCK_WORKSTATION中,我无法加载

的“PasswordchangeUI”编辑字段

旧密码、新密码和确认密码

在凭据提供程序的磁贴上。

我正在使用以下代码加载这些组件。

HRESULT hr; ICredentialProviderCredentialEvents*
_pCredProvCredentialEvents;

  hr =
_pCredProvCredentialEvents->SetFieldState((ICredentialProviderCredential*)this,SFI_LOGIN_NAME,CPFS_HIDDEN);  // successfully hides the field.
    hr = _pCredProvCredentialEvents->SetFieldState((ICredentialProviderCredential*)this,SFI_PASSWORD,CPFS_HIDDEN);    // successfully hides the field.

   hr =
_pCredProvCredentialEvents->SetFieldState((ICredentialProviderCredential*)this,SFI_OLDPASSWORD,CPFS_disPLAY_IN_SELECTED_TILE);  // Fails to load the field.

   hr =
_pCredProvCredentialEvents->SetFieldState((ICredentialProviderCredential*)this,SFI_NEWPASSWORD,SFI_CONFPASSWORD,CPFS_disPLAY_IN_SELECTED_TILE); // Fails to load the field.

在上面的代码中,我成功隐藏了 SFI_LOGIN_NAME 和 SFI_PASSWORD 字段, 但我无法显示 SFI_OLDPASSWORD、SFI_NEWPASSWORD 和 SFI_CONFPASSWORD。

如果有人能帮助解决这个问题,我将不胜感激。

问候 阿斯拉姆

解决方法

试试这个序列:

  1. 首先尝试添加新字段。
  2. 将提交按钮重新定位到新字段之一。
  3. 隐藏旧字段。
  4. 返回 CPGSR_NO_CREDENTIAL_NOT_FINISHED 状态以重新激活用户输入字段。

替代方案 - 尝试使用 SFI_PASSWORD 而不是 SFI_OLDPASSWORD

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。