8

app.config と web.config ファイルのカスタム セクションを暗号化/復号化する必要があります。aspnet_regiis を web.config に使用できることを読みましたが、プログラムでこれを行う必要があります。

マップされたExeConfigurationを開いた後、次のようにセクションを指定します:

ConfigurationSection connStrings = config.AppSettings;

AppSettings セクションを暗号化/復号化します。

カスタム セクションの名前を指定するにはどうすればよいですか? configurationSection オブジェクトの後にカスタム セクションの名前を入力すると、intelli-sense がそれを認識しません。(よく知られているいくつかのセクションのみを認識します)

PS 私の関数では、カスタム セクション名を文字列パラメーターとして取得する必要があります。

例:

例えば

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

MyCustomTag は、暗号化/復号化する必要があるセクションです。

4

3 に答える 3

4

http://www.a2zmenu.com/Blogs/CSharp/How-to-encrypt-configuration-file.aspxで見つけたコードを使用してこれを達成しました

コードを貼り付けますが、基本的には、アプリケーション名を変更することを除いて、その Web ページのコードとほとんど同じです。

編集:カスタムセクションについては、使用する必要がなかったためわかりませんが、次の行で構成オブジェクトが提供するものを調べることができます。

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

これが私の UpdateKey() メソッド全体です。これは、Web ページから少し変更したことに気付きました。多分それは役立ちます。

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

次に、キーを保存した後、呼び出します

EncryptAppSettings("appSettings");

おそらく、そこに合わせてパラメータ値を調整することもできます。

于 2013-05-13T10:21:37.237 に答える
2

VS 2010 の CommandPromt から、暗号化のコマンドを呼び出します。

%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"
于 2013-05-13T09:52:15.353 に答える
0

暗号化するには、HaGeverが回答に投稿したコマンド ラインを使用します。

この質問には、コードから app.config ファイルを読み取るためのコード例がいくつかあります。app.config の復号化に使用されるマシンに暗号化キーがインストールされていないため、コードは機能しません。

于 2013-05-13T10:06:38.303 に答える