我正在尝试在我的 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中运行时,工作正常,但通过命令提示符将该服务安装到系统中时,此功能不起作用。