如何加密app.config?

Med*_*tor 7 c# security wpf connection-string

在wpf中创建app.config(c#)

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <clear />
    <add name="Name"
     providerName="MySql.Data"
     connectionString="Server=.net;Uid=;Pwd=H;Database=;charset=utf8;Allow Zero Datetime=true;" />
  </connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

用过的代码C#:

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    ConnectionStringsSection conStr = config.ConnectionStrings;
    if (!conStr.SectionInformation.IsProtected)
    {
        conStr.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
        conStr.SectionInformation.ForceSave = true;
        config.Save();
    }
    else
    {
        foreach (ConnectionStringSettings ss in conStr.ConnectionStrings)
            Console.WriteLine(ss);
        Console.Read();
    }
Run Code Online (Sandbox Code Playgroud)

config.Save(); - 导致异常:

{"无法使用提供程序'RsaProtectedConfigurationProvider'加密'connectionStrings'部分.来自提供程序的错误消息:对象已存在.\ r \n"}}

Gre*_*her 1

我在保存时遇到了同样的异常。通过以管理员身份运行该应用程序,我能够解决这个问题。

我向项目中添加了一个 app.manifest 文件,并更改了执行级别,如下所示:requestedExecutionLevel level="requireAdministrator" uiAccess="false"

这样,我始终以管理员身份运行,并且有权保存加密部分。