如何加密app.config?

时间:2010-12-01 23:16:05

标签: c# wpf security connection-string

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

<?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>

使用了代码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();
    }

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

  

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

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:-1)

您可以查看使用aspnet_regiis.exe为您执行加密。参考这个 MSDN Link

这样您就可以在不编写代码的情况下执行加密。