2010-12-01 145 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 =「假」

這樣一來,我始終以管理員身份運行,並有權限保存加密部分。