繁体   English   中英

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

[英]How to change the Domain Password for a user in LOCK scenario CPUS_UNLOCK_WORKSTATION condition in Custom Credential Provider in Windows 10

我正在为 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。

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

问候阿斯拉姆

试试这个序列:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM