4

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

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

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

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

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

4

1 回答 1

4

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

于 2015-07-06T13:58:32.210 回答