使用 Windows 7 SDK 的凭据提供程序示例

Posted

技术标签:

【中文标题】使用 Windows 7 SDK 的凭据提供程序示例【英文标题】:Working with credential provider sample of Windows 7 SDK 【发布时间】:2011-01-18 12:33:11 【问题描述】:

我正在开发自定义 Windows 登录,以便用户可以使用网络摄像头(面部识别)或用户名和密码。我可以在登录屏幕上显示一个包含所有必需控件的窗口,但我不明白如何使用提供的用户名和密码进行身份验证。为此,Window 使用 GetSerialize() 函数。

GetSerialization(
__out CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE* pcpgsr,
__out CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* pcpcs, 
__deref_out_opt PWSTR* ppwszOptionalStatusText, 
__in CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
)

以上是函数签名。如您所见,系统使用CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE*CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION* 指针来获取有关用户名和密码的信息。我如何调用它进行身份验证。或者在登录时有没有其他方法可以做到这一点。

【问题讨论】:

您好,您能告诉我您是如何使凭据提供程序示例正常工作的吗?我正在尝试使用相同类型的应用程序(人脸识别登录),但我与凭据提供程序堆叠在一起。我使用 Windows 7 专业版和 SDK 7.0。我已经从 SDK 示例文件夹构建了 SampleCredentialProvider 应用程序,它创建了所有注册表内容的 dll 文件,但在登录时没有新用户(示例文件夹中的文档中的管理员或访客)。有什么技巧还是我跳过了什么?谢谢。 我也遇到了麻烦...但是我正在为 x32 编译,然后在 x64 机器上尝试代码....没有工作....为 x64 重新编译并且它工作。 ymmv 【参考方案1】:

不知道你现在解决了没有?

不要调用GetSerialization(),这是由 Windows 调用的(例如,由 WinLogon 执行交互式登录)。您只需填写序列化响应和序列化凭证。如果您回传一个响应,说明您已成功从用户那里收集了凭据,则序列化数据将传递给本地安全机构进行检查。

如果您确实想将凭证放入您自己的应用程序中,您可以使用CredUIPromptForWindowsCredentials

【讨论】:

以上是关于使用 Windows 7 SDK 的凭据提供程序示例的主要内容,如果未能解决你的问题,请参考以下文章

Windows 7 pro 上的凭据提供程序 64 位

win8中的凭据提供程序

使用 C# 的 Windows 10 凭据提供程序

如何使用 V2 CP 示例自定义 Windows 10 凭据提供程序?

C++ Windows 凭据提供程序进度屏幕

Windows 凭据提供程序远程登录