如何在其他用户磁贴

时间:2015-07-06 09:01:36

标签: c login com credentials credential-providers

我正在尝试开发Credentialprovider v2。我正在尝试使用Microsoft提供的samplecredentialproviderv2。安装可再发行组件2013并编译正确的架构之后,我已经注册了它并且它有效。

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

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

提供here的文件说明如下: "•v2凭据提供程序必须实现ICredentialProviderCredential2接口并在GetUserSID函数上返回有效的SID。这告诉Windows应该将提供者与哪个用户相关联。"

我的问题是,如何在GetUserSid函数中返回多个Sid。 如果你可以帮忙的话会很棒。

1 个答案:

答案 0 :(得分:2)

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