如何在vc ++ CredentialProvider示例中隐藏Windows 7切换用户按钮

时间:2010-12-28 10:52:10

标签: c++ windows-7 sdk login credentials

Credential provider screenshot

  1. 我提供了我的截图 CredentialProvider窗口。在这 窗户一切都很好,但我 不想显示Switch User 按钮给用户。我该怎么办 这个。我只是在编辑Win-7 SDK CredentialProvider的样本 (C ++)。任何人都可以帮助我,或任何 代码帮助的链接。

  2. 我想要问的另一件事是默认情况下,用户名文本框以灰色显示EditText。我如何将其更改为Username文本。我可以在SHStrDupW(L"", &_rgFieldStrings[SFI_EDIT_TEXT]);代码中设置文本,但不在背景文本中设置。是否有任何黑客攻击。

  3. 感谢SO成员

2 个答案:

答案 0 :(得分:4)

您无法直接阻止“切换用户”按钮出现;如果出现导致它出现的条件,那么它就会出现。但是你能做什么:防止导致它出现的条件。

当磁贴处于选定状态时,该按钮出现;以及1.)您的凭证提供程序枚举除所选磁贴之外的磁贴,或2.)其他凭据提供程序枚举磁贴。

第一个条件很容易预防:在GetCredentialCount()中,始终报告您只枚举一个凭据。 (这当然意味着您必须构建磁贴以处理所有用户。)

要防止出现第二种情况,您必须实施凭据提供程序筛选器。 (如果您不知道那是什么,请搜索“ICredentialProviderFilter”界面。)

祝你好运。

答案 1 :(得分:3)

回答问题2:

用户名文本框以灰色显示EditText。您可以将其更改为用户名文本。您可以使用

设置文本
SHStrDupW(L"", &_rgFieldStrings[SFI_EDIT_TEXT]);

看看 common.h ,你会发现

CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR s_rgCredProvFieldDescriptors[] =  { SFI_EDIT_TEXT, CPFT_EDIT_TEXT, L"Edit Text" }

如果您将此编辑文字更改为用户名,则它将显示在您的文本框中。