2012-01-07 10 views
1

私はC#のウィンドウベースのアプリケーション.net 4環境を開発しています。私のアプリケーションでは、設定ファイル(app.config)の属性をプログラムで更新したいと考えています。実際には1つのユーザーインターフェイス(テキストボックス)を作成しました。保存ボタンをクリックすると、設定ファイルのこの値を永久に更新したいと考えています。例えばC#windowsアプリケーションで設定ファイル(app.config)の情報をプログラムで変更する方法は?

は:

私は私の設定file.Supposeでの暗号化キーを持って、ユーザーがそのインタフェースを使用して新しい暗号化キーを入力することができ、それが自動的に設定ファイルの暗号化キーの値を更新します。

これは可能ですか?

答えて

4

あなたがこの参照を追加する必要がまず第一に:System.Configuration、そしてあなたは、このコードで、たとえばapp.configに書き込むことができます。

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

     ConfigurationSectionGroup applicationSectionGroup = config.GetSectionGroup("applicationSettings"); 
     ConfigurationSection applicationConfigSection = applicationSectionGroup.Sections["YourApp.Properties.Settings"]; 
     ClientSettingsSection clientSection = (ClientSettingsSection)applicationConfigSection; 

     //Encryption Key Configuration Setting 
     SettingElement applicationSetting = clientSection.Settings.Get("EncryptionKey"); 
     applicationSetting.Value.ValueXml.InnerXml = this.textBoxKey.Text.Trim(); 

     applicationConfigSection.SectionInformation.ForceSave = true; 
     config.Save(); 

     ConfigurationManager.RefreshSection("applicationSettings"); 

ベア心​​の中であなたが持つ前に、app.configファイルを作成する必要がありますVisual Studioウィザードでは、この例では暗号化キーのフィールドをEncryptionKeyとし、関連するテキストボックスはtextBoxKeyの形式で呼び出しました。

1

app.configを編集する最も良い方法は、セットアッププロジェクトを作成することです。

セットアッププロジェクトはAdminとして実行され、プログラムファイルフォルダに書き込むことができます。通常の標準ユーザーによるプログラムファイルフォルダへの書き込みは許可されていません。

設定中に、設定ファイルに設定する必要がある値についてユーザーから情報を収集し、正しいフォルダを検索することができます。

ユーザーごとの設定を変更する場合は、ユーザーの設定がユーザーのプロファイルに書き込まれているため、この問題は発生しません。

0

実行時に設定ファイルを編集しますか?これは可能です。 System.ConfigurationアセンブリのConfigurationManagerクラスを使用します(参照を追加します)。たとえば、好きなセクションを取得します。 appSettingsを実行して変更します。

+0

を助けるかもしれません – Saravanan

0

これは、はい私は、実行時にそれを編集したい

 Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); 
     AppSettingsSection appsettings = (AppSettingsSection)config.GetSection("appSettings"); 
     appsettings.Settings["Key"].Value = "value"; 
     config.Save(ConfigurationSaveMode.Modified); 
関連する問題