【发布时间】:2023-03-04 13:05:01
【问题描述】:
我有一个需要解密配置文件的 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 服务尝试读取配置文件时,我仍然遇到相同的错误。我做错了什么?
【问题讨论】:
-
使用 string.Format 函数来避免所有的引号在这里你可以按照一个简单的例子 - stackoverflow.com/questions/13653991/…
-
@MethodMan,我已经编辑了上面的代码以反映您的建议。现在更漂亮了,但还是不行 :-) / :-(
标签: c# winforms encryption acl