我有一个需要解密配置文件的Windows服务,我在同一台计算机上加密了该配置文件。 (它不需要出口。)我一直在努力克服这种情况。 " RSA密钥容器无法打开"错误。我能够手动完成:
c:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
但我需要以编程方式完成此操作。基于两个帖子(一个来自SO,另一个来自CodeProject),我尝试了这个:
private void GrantAccessToDecryptConfigFile()
{
// programatically execute this command:
// c:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
string command = "-pa";
string keyName = "NetFrameworkConfigurationKey";
string userName = @"NT AUTHORITY\NETWORK SERVICE";
string arguments = string.Format("{0} \"{1}\" \"{2}\"", command, keyName, userName);
var psi = new ProcessStartInfo(@"C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe")
{
Arguments = arguments,
UseShellExecute = false,
CreateNoWindow = true
};
Process.Start(psi);
}
...但是当Windows服务尝试读取配置文件时,我仍然遇到同样的错误。我做错了什么?
答案 0 :(得分:0)
我认为您需要的是具有管理员权限的用户来运行Windows服务。我猜你在一个提升的命令提示符上运行该命令,因为这是我能使它工作的唯一方法。
同样当我尝试在Visual Studio上运行它时,我得到了同样的错误。我以“以管理员身份运行”启动了Visual Studio,并且成功了。