2

我正在编写一个应用程序,它需要在 Windows 上存储多个(XMPP)帐户的登录数据。CredRead目前,该应用程序使用和将它们存储在 Windows 的“存储的用户名和密码”中CredWrite。这就是问题所在:无法更改 XMPP 帐户的登录名(它是帐户的 JID),但 Windows 仅将用户名/密码对存储在给定的目标名称下。我使用“xmpp:account@server.tld”之类的名称作为目标名称,并且在登录期间根本不使用用户名。用户甚至不能在应用程序中设置用户名(它将被自动设置为“account@server.tld”)。

现在我想防止用户名(使用控制面板或rundll32.exe keymgr.dll, KRShowKeyMgr)或其他应用程序更改为不同的用户名,因为这目前是可能的,并且由于实际值被忽略,因此有些混乱。如果我打开“存储的用户名和密码”对话框(使用rundll32.exe keymgr.dll, KRShowKeyMgr),由我的应用程序创建的条目被列为“xmpp:account@server.tld (LegacyGeneric)”并且可以使用“编辑.. 。“ 按钮。该列表还包含一个 Windows Live 条目(列为“live_account@hotmail.com (WindowsLive)”),其用户名无法更改(尝试更改会弹出一个消息框:“Windows 无法保存登录信息。使确保信息正确,并且所有必填字段均已填写。”。

这是(最后)我的问题:我也可以为我的应用程序获得这种行为吗?如何将凭证类型更改为不同于“LegcyGeneric”的类型?或者是否有更好的方法来仅存储给定登录名的密码(可能使用 Windows 数据保护),同时仍然使用一些“标准”Windows 方式来存储它们?

任何提示和答案表示赞赏。

4

0 回答 0