在C#中使用aspnet_regiis动态加密web.config

时间:2019-02-06 12:51:47

标签: c# encryption web-config console-application

我试图使用一个实用工具集中化web.config / app.config。我可以转换任何文件夹中的所有app.config文件,但我仍停留在web.config中。似乎webconfigurationmanager将无法在虚拟目录之外工作。所以我试图在我的工具中实现aspnet_regiis的加密-解密方法。

private void RunProcess(string processName, string arguments)
    {
        var newProcess = new ProcessStartInfo(processName);
        //Log("User: " + GetSystemName());

        if (null != arguments && arguments.Any())
        {
            newProcess.Arguments = arguments;
            newProcess.CreateNoWindow = true;
            newProcess.ErrorDialog = true;
            newProcess.RedirectStandardError = true;
            newProcess.RedirectStandardOutput = true;
            newProcess.UseShellExecute = false;
        }
        using (var proc = new Process())
        {
            proc.StartInfo = newProcess;
            proc.Start();
            Console.WriteLine(proc.StandardOutput.ReadToEnd());
            proc.WaitForExit();
        }
    }

private void Encrypt(string path)
    {
        string framework = @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe";

        if (8 == IntPtr.Size
            || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
            framework = @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe";


        RunProcess(framework, " -pef \"connectionStrings\"  \"C:\\Users\\xxx\\Desktop\\somefolder\" –prov \"DataProtectionConfigurationProvider\"");
    }

我的疑问是

  

“ -pef \” connectionStrings \“ \” C:\ Users \ xxx \ Desktop \ somefolder \“   –prov \“ DataProtectionConfigurationProvider \”“

我确定我在这里犯了一些错误,因为命令根本没有执行。它给了我aspnet_regiis帮助选项。

1 个答案:

答案 0 :(得分:0)

对不起,我的错。看来C#根本不需要提供程序。我将其更改为

  

“ -pef \” connectionStrings \“ \” C:\ Users \ xxx \ Desktop \ somefolder \“”

瞧!成功了。