【发布时间】:2021-09-18 20:47:39
【问题描述】:
我正在为 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, CPFS_DISPLAY_IN_SELECTED_TILE); // Fails to load the field.
hr =
_pCredProvCredentialEvents->SetFieldState((ICredentialProviderCredential*)this, 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状态以重新激活用户输入字段。