2010-12-01 68 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

+0

@ThiefMaster、これはフォーラムから読みました...どうしたのですか? – Mediator

+0

可能な複製:http://stackoverflow.com/questions/42115/app-config-connection-string-protection-error – Cocowalla

答えて

-1

あなたはaspnet_regiis.exeを使って暗号化を行うことができます。これを参照してください MSDN Link

この方法でコードを記述することなく暗号化を実行できます。

+1

これは、ASP.Netがホストするアプリケーションのweb.configファイルでのみ機能します。 –

+0

本当に申し訳ありません..'aspnet_regiis.exe'はここで助けになりません。 –

+0

権限の問題のように見えます。あなたは 'DataProtectionConfigurationProvider'を使ってみることができますか?あなたはこのコマンド 'aspnet_regiis -pa" NetFrameworkConfigurationKey "{domain} \ {user}"でログインIDに追加の許可を与えることができますか? –

0

をご確認ください。このアプリケーションを管理者として実行することで、私はこれを回避することができました。

が、私は私のプロジェクトにapp.manifestファイルを追加し、そのように実行レベルを変更:のrequestedExecutionLevelレベル=「requireAdministrator」uiAccess =「false」を

この道を、私は常に管理者として実行、および権限を持っています暗号化されたセクションを保存します。

関連する問題