从Windows Credentials存储使用C#检索凭据
发布时间:2020-12-13 20:48:55 所属栏目:Windows 来源:网络整理
导读:我只想查询Credentials Store(或者在Win8中调用的Vault),并获取登录数据。在这种情况下,MSDN真的没有帮助,我也不想要任何C pInvoke方法。 我知道类似的问题在这里已经被问到了几次,但是没有一个解决方案在我的情况下工作。我不使用Metro应用程序编程,所
我只想查询Credentials Store(或者在Win8中调用的Vault),并获取登录数据。在这种情况下,MSDN真的没有帮助,我也不想要任何C pInvoke方法。
我知道类似的问题在这里已经被问到了几次,但是没有一个解决方案在我的情况下工作。我不使用Metro应用程序编程,所以像PasswordVault这样的东西(看起来)不可用。我只是创建一个简单的C#WPF桌面应用程序。 理想情况下,它应该在几个Windows版本中工作,但Win8是最受欢迎的。 更具体地说,我想从Outlook的CRM插件中查询存储的数据,自动将我的应用程序登录到CRM服务器,而不需要用户要求他的凭据。这意味着,如果这是可能的话 那么如何访问Windows凭据存储?
有一个Nuget库,我一直在使用称为CredentialManagement
http://nuget.org/packages/CredentialManagement/ 用法非常简单。我把它包好了一点,但可能不需要: public static class CredentialUtil { public static UserPass GetCredential(string target) { var cm = new Credential {Target = target}; if (!cm.Load()) { return null; } //UserPass is just a class with two string properties for user and pass return new UserPass(cm.Username,cm.Password); } public static bool SetCredentials( string target,string username,string password,PersistanceType persistenceType) { return new Credential {Target = target,Username = username,Password = password,PersistanceType = PersistanceType.Enterprise}.Save(); } public static bool RemoveCredentials(string target) { return new Credential { Target = target }.Delete(); } } 样品用量: CredentialUtil.SetCredentials("FOO","john","1234",PersistanceType.LocalComputer); var userpass = CredentialUtil.GetCredential("FOO"); Console.WriteLine($"User: {userpass.Username} Password: {userpass.Password}"); CredentialUtil.RemoveCredentials("FOO"); Debug.Assert(CredentialUtil.GetCredential("FOO") == null); 如果您有兴趣自己实现,请浏览源: 诀窍是Credential Manager中没有C#API。这个库很好地包装了其他的.dll入口点。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows – 通过PowerShell自动化WSUS
- hyper-v-server-2008-r2 – 使用Windows 10管理Windows Ser
- 在Conflicker之后清理XP,Win2k和Windows 2003的有效方法
- Create AD Users by Powershell
- windows-event-log – 事件日志>过滤器当前日志> XML>
- windows-server-2008 – 系统速度/内存考虑因素x86与x64
- 如何在Windows 2012 RDP中禁用TLS 1.0
- 在stdin阻塞Windows时退出应用程序
- windows – 在Active Directory环境中使用名称或IP进行连接
- winapi – 如何在Vista / Windows7中添加持久IPv6地址?