這是一個允許你改變在<AppSettings>
項的方法:
internal static bool SetSetting(string Key, string Value)
{
bool result = false;
try
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove(Key);
var kvElem= new KeyValueConfigurationElement(Key, Value);
config.AppSettings.Settings.Add(kvElem);
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");
result = true;
}
finally
{ }
return result;
} // function
注意,我發現有必要刷新更新後的部分appSettings
。
該函數在添加密鑰之前刪除密鑰,以避免重複輸入。如果密鑰以前不存在,這也適用。如果有任何錯誤,則返回假,成功true。閱讀設置的方法是微不足道的,只是上市的完整性:
internal static string GetSetting(string Key)
{
string result = null;
try
{
result = ConfigurationManager.AppSettings[Key];
}
finally
{ }
return result;
} // function
注意,我已經被周圍它嘗試......終於塊壓制錯誤。如果發生任何錯誤,則GetSetting僅返回null,而SetSetting返回false。這使得處理更容易,但是如果您需要例外,您仍然可以添加
catch (Exception) { throw; }
將異常向調用方拋出。或者,調試您可以添加:
#if DEBUG
catch (Exception ex) {
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
#endif
,它會顯示在Visual Studio的輸出窗口中的異常,如果你選擇了「調試」配置,但將繼續與代碼。
注(交叉引用到一個類似的主題):
在同一個目錄中存儲寫入設置爲EXE是一個壞主意 - 在Vista/Win7的,這需要管理員寫入和意志觸發UAC並導致您的應用程序運行提升。最好在別處存儲應用程序設置。 – Andy 2010-09-05 03:36:55
@Andy這對我來說不太合適。我編寫了很多程序,可以在與EXE相同的目錄下寫入xml文件,而不會觸發UAC。 – 2010-09-05 22:50:42