如何解决如何在 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。
如果有人能帮助解决这个问题,我将不胜感激。
问候 阿斯拉姆
解决方法
试试这个序列:
- 首先尝试添加新字段。
- 将提交按钮重新定位到新字段之一。
- 隐藏旧字段。
- 返回
CPGSR_NO_CREDENTIAL_NOT_FINISHED
状态以重新激活用户输入字段。
替代方案 - 尝试使用 SFI_PASSWORD
而不是 SFI_OLDPASSWORD
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。