C# 通过编程允许Windows服务解密配置文件
我有一个Windows服务需要解密配置文件,我在同一台计算机上加密了配置文件。(它不需要是可导出的。)我一直在努力克服ol“无法打开RSA密钥容器”错误。我可以手动执行此操作:C# 通过编程允许Windows服务解密配置文件,c#,winforms,encryption,acl,C#,Winforms,Encryption,Acl,我有一个Windows服务需要解密配置文件,我在同一台计算机上加密了配置文件。(它不需要是可导出的。)我一直在努力克服ol“无法打开RSA密钥容器”错误。我可以手动执行此操作: c:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE" 但我需要按程序完成这项工作。基于两篇文章(一篇来自,另一篇来自
c:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
但我需要按程序完成这项工作。基于两篇文章(一篇来自,另一篇来自),我尝试了以下方法:
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服务尝试读取配置文件时,我仍然会遇到相同的错误。我做错了什么?我认为您只需要一个具有管理员权限的用户就可以运行Windows服务。我猜您应该在提升的命令提示符下运行该命令,因为这是使其工作的唯一方法
同样,当我试图在VisualStudio上运行它时,我也遇到了同样的错误。我用“以管理员身份运行”启动了Visual Studio,并成功运行。使用string.Format函数避免所有引号,这里有一个简单的示例-@MethodMan,我编辑了上面的代码以反映您的建议。现在更漂亮了,但仍然不起作用:-)好吧,很抱歉。我想我可以重现这个问题。谢谢你的努力!