如何通过自定义Windows服务从credentialmangement.dll访问Windows凭据

时间:2019-04-02 07:07:37

标签: c# windows credential-manager

我正在尝试在我的 windows服务中使用Credentialmanagement.dll从Windows凭据管理器访问/检索用户名和密码,但是由于它返回null,因此我无法获取/读取这些值/ target键不存在。但实际上,目标存在于凭据管理器中。我可以在其他应用程序(控制台/ WPF应用程序)中读写,但是当我尝试从Windows服务读取时,它给出的是空值或目标键不存在。

我曾尝试通过授予管理员权限来安装该服务。

 public static string[] GetCredentials(string target) {

            target = "MyCredential";
            string[] credentials = new string[2];
            using (var credential = new Credential()) {

                credential.Target = target;
                credential.PersistanceType = PersistanceType.LocalComputer;
                credential.Type = CredentialType.Generic;
                if (credential.Exists())
                {
                    credential.Load();
                    credentials[0] = credential.Username;
                    credentials[1] = credential.Password;
                    Console.WriteLine($"User name : {credential.Username} and password : {credential.Password} ");
                    return credentials;
                } else {
                    return null;
                }
            }

        }

以上代码用于从凭证管理器中检索数据。当我在Visual Studio中运行时,工作正常,但通过命令提示符将该服务安装到系统中时,此功能不起作用。

0 个答案:

没有答案