2010-12-01 55 views
6

在WPF创建的app.config(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'。来自 提供程序的错误消息:对象已存在。\ r \ n“}

+1

@ThiefMaster:这显然是错误的。 – jason 2010-12-01 23:48:01

+0

@ThiefMaster,我从论坛上阅读......它是如何完成的? – Mediator 2010-12-01 23:50:39

+0

可能的重复:http://stackoverflow.com/questions/42115/app-config-connection-string-protection-error – Cocowalla 2010-12-02 01:16:09

回答

-1

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

这样你可以执行加密而无需编写代码。

0

我正上保存相同的异常。通过以管理员身份运行应用程序,我能够解决这个问题。

我添加了一个app.manifest文件到我的项目,并改变了执行层面,像这样:requestedExecutionLevel水平=“requireAdministrator” uiAccess =“假”

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