我将CredUIConfirmCredentials与 CredUIPromptForCredentials结合使用。
我设置了, 并且当用户首次提供EXPECT_CONFIRMATION
凭据时,调用返回NO_ERROR按预期。CredUIConfirmCredentials
CredUIConfirmCredentials
但是,在使用相同凭据的所有后续调用中,将返回ERROR_INVALID_PARAMETER。SDK 文档将其描述为:
尝试确认等待的凭据失败,因为凭据包含无效或不一致的数据。
这相当令人困惑,因为它们与最初成功保存的凭据完全相同。
如果您为相同的用户名输入不同的密码,则会返回相同的结果。更令人困惑的是,新凭据实际上是持久化的——这似乎表明返回值实际上表明持久化的凭据被覆盖了——而不是存在错误。我错过了什么,还是文档不正确?
背景
您可以使用 Window 的凭据系统来存储您自己的应用程序的凭据。您告诉 Windows 您要提示某些“目标”的“通用”凭据:
伪代码:
CredUIPromptForCredentials("My Application", ref username, ref password);
然后将导致 Windows 显示一个对话框:
然后,您的工作就是检查用户输入的凭据。如果它们有效,则通过调用ConfirmCredentials告诉 Windows 。这是为了确保只保存有效的凭据:
CredUIConfirmCredentials("My Application", true);
一旦凭据被确认为有效,Windows 会将它们保存在安全存储中,您可以通过控制面板查看:
关键词:credui, CredUIConfirmCredentials