存储的用户名和密码

我正在编写一个应用程序,需要在Windows存储多个(XMPP)帐户的login数据。 目前,应用程序使用CredReadCredWrite将它们存储在Windows的“存储用户名和密码”中。 这里是问题:XMPP帐户的login名称不能更改(这是帐户的JID),但Windows只存储给定目标名称下的用户名/密码对。 我使用“xmpp:account@server.tld”作为目标名称,在login时根本不使用用户名。 用户甚至不能在应用程序中设置用户名(它会自动设置为“account@server.tld”)。

现在我想阻止用户名(使用控制面板或rundll32.exe keymgr.dll, KRShowKeyMgr )或其他应用程序更改为不同的用户名,因为这是目前可能的,因为实际值被忽略无论如何。 如果我打开“存储的用户名和密码”对话框(使用rundll32.exe keymgr.dll, KRShowKeyMgr ),我的应用程序创build的条目列为“xmpp:account@server.tld(LegacyGeneric)”,并且可以使用“编辑…”button进行编辑。 该列表还包含一个用于Windows Live的条目(列为“live_account@hotmail.com(WindowsLive)”),其用户名不能更改(尝试这样会popup一个消息框,提示:“Windows无法保存login信息。确保信息是正确的,并且所有必填字段都已完成。“

这里是(最后)我的问题:我也可以得到我的应用程序的这种行为? 如何将证书types更改为与“LegcyGeneric”不同的内容? 还是有更好的方式来存储一个给定的login名密码(可能使用Windows数据保护),同时仍然使用一些“标准”的Windows存储方式?

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