我一直在使用一个NuGet库,称为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 = persistenceType}.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);如果您有兴趣自己实现它,请浏览源代码:http
:
//credentialmanagement.preplex.com/SourceControl/latest
诀窍是,凭据管理器中没有C#API。该库很好地包装了其他.dll入口点。:-)



