2013-05-13 60 views
8

我需要加密/解密app.config中的自定義部分以及web.config文件。我讀過aspnet_regiis可以用於web.config,但我需要以編程方式執行此操作。加密app/web.config文件中的自定義部分

打開mappedExeConfiguration後,我指定一個部分,如下所示:

ConfigurationSection connStrings = config.AppSettings; 

加密/解密appSettings部分。

如何指定自定義部分的名稱?當我在configurationSection對象後輸入自定義節的名稱時,intelli-sense無法識別它。 (它只識別幾個衆所周知的部分)

P.S.在我的函數中,我需要將自定義節名稱作爲字符串參數。

例如:

例如:

<Configuration> 
    <MyCustomTag> 
     <... data /> 
    </MyCustomTag> 
</Configuration> 

其中MyCustomTag是我需要加密/解密的部分。

回答

2

從CommandPromt VS 2010年呼籲加密的命令:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pef "connectionStrings" "YOUR_PROJECT_NAME" -prov "DataProtectionConfigurationProvider" 

解密:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pdf "connectionStrings" "YOUR_PROJECT_NAME" 
+0

我需要以編程方式執行此操作。另外,部署站點不需要具有aspnet_regiis。 – Karan 2013-05-13 10:10:41

+0

這適用於標準命令行,而不僅僅是VS 2010命令提示符。我發現最簡單的方法就是cd到我的網站的根目錄,然後使用WITH_PROJECT_NAME的空字符串命令。 – user489998 2014-02-05 16:18:32

0

要加密,使用由HaGever張貼在答案是命令行。

This question有一些示例代碼來從代碼中讀取app.config文件。該代碼無法工作,因爲加密密鑰未安裝在用於解密app.config的機器上。

+0

我需要以編程方式執行此操作。另外,部署站點不需要具有aspnet_regiis。 – Karan 2013-05-13 10:11:02

4

我使用的代碼,我發現在http://www.a2zmenu.com/Blogs/CSharp/How-to-encrypt-configuration-file.aspx

我在貼我的代碼來實現這一點,但基本上它是非常一致的是網頁上的代碼,不同的是改變應用程序的名稱。

編輯:對於自定義部分,我不確定,因爲我不需要使用它,但是您可以在下面的行中探索配置對象爲您提供的內容。

Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe"); 

這裏是我的整個UpdateKey()方法,現在我已經意識到我適應了一點網頁。也許它有幫助。

public static void UpdateKey(string key, string newValue) 
{ 
    Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe"); 
    config.AppSettings.Settings[key].Value = newValue; 
    config.Save(); 
} 

再經過我救了我的鑰匙(S),我稱之爲

EncryptAppSettings("appSettings"); 

,或許你可以調整參數值的方式,以適應那裏了。

+0

謝謝。看上去不錯。 – Karan 2013-05-13 10:38:11

+0

問題已更新。但是,它僅顯示如何加密appSettings部分而不是自定義部分。在我的情況下,我想要在例如<... data> Karan 2013-05-13 10:43:39

+0

編輯我的答案。 – 2013-05-13 11:03:20