【问题标题】:How to show ICredentialProviderCredentialv2 on more than one User tile on the other user tile如何在另一个用户磁贴上的多个用户磁贴上显示 ICredentialProviderCredentialv2
【发布时间】:2015-09-23 08:28:19
【问题描述】:

我正在尝试开发 Credentialprovider v2。我正在尝试使用 Microsoft 提供的 samplecredentialproviderv2。在安装了可再发行版 2013 并为正确的架构编译后,我注册了它并且它工作了。

我的问题是,它仅适用于第一个显示的用户磁贴。如果我枚举了多个用户磁贴,它要么只显示在一个用户磁贴中,要么我出错并破坏了我的登录 UI。

我知道这个问题与one 非常相似。在这里,我可以说我已经尝试了上述 Microsoft 文档中所述的解决方案。有一个功能可以指示是否显示“其他用户”图块,并且此功能工作得很好。唯一的问题是,else if 不起作用,因为如果你得到一个合法的瓷砖 getSid 不会到达 else if。因此,如果您在 getSid 中返回 null sid 和 hr_false,则 credentialprovider 将显示在其他用户磁贴中,但在这种情况下,不会在其他任何地方显示。如果此解决方案是硬编码的。 我尝试创建多个 ICredentialProviderCredential,以便我有一个接口列表,但它不起作用。

here 提供的文档说明如下: “• v2 凭据提供程序必须实现 ICredentialProviderCredential2 接口并在 GetUserSID 函数上返回一个有效的 SID。这会告诉 Windows 提供程序应与哪些用户关联。”

我的问题是,如何在 GetUserSid 函数中返回多个 Sid。 如果您能提供帮助,那就太好了。

【问题讨论】:

    标签: c login com credentials credential-providers


    【解决方案1】:

    在 ICredentialProvider::GetCredentialCount() 中,您返回凭据提供程序将提供的凭据块数(每个用户一个)(凭据提供程序可以从提供给 SetUserArray() 的用户数组中了解“有”多少用户)。返回一个不同的 ICredentialProviderCredential2 实例以响应对您的 ICredentialProvider::GetCredentialAt() 的每次调用登录,并从这些实例中的每一个返回一个不同的 SID 以响应 GetUserSID()。然后,您的每个凭据都应在登录时与不同的用户相关联。

    【讨论】:

    • 谢谢菲尔,我检查了我的日志后似乎很明显。所以我将其标记为已解决。
    • @Khalidjian 我确实有同样的问题:我的 CP v2 只显示本地管理员帐户。您能否提供您在帮助下实现的代码,因为我对 C++ 很陌生?非常感谢
    • @StehtimSchilf 很抱歉我不能提供示例代码,因为该项目的开发距离纯粹的凭证提供者太远了,所以我担心它会很混乱,如果我发布示例代码。
    • @StehtimSchilf 如果您使用 Microsoft 示例,我将在您的提供程序标头中提示您是“CSampleCredential”类型的私有成员。我将其更改为:std::vector<CSampleCredential> _pCredentialVector; // SampleV2Credential 这样您就可以为每个显示的用户创建一个凭据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多