Dies ist die Methode, die Sie Einträge in den <AppSettings>
ändern kann:
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
Hinweis, dass ich finde es habe erforderlich ist, den Abschnitt appSettings
nach dem Update zu aktualisieren.
Die Funktion entfernt einen Schlüssel, bevor er hinzugefügt wird, um doppelte Einträge zu vermeiden. Dies funktioniert auch, wenn der Schlüssel vorher nicht existiert. Wenn ein Fehler vorliegt, wird false zurückgegeben, bei Erfolg true. Die Methode Einstellungen zu lesen ist trivial und nur der Vollständigkeit halber aufgeführt:
internal static string GetSetting(string Key)
{
string result = null;
try
{
result = ConfigurationManager.AppSettings[Key];
}
finally
{ }
return result;
} // function
Hinweis, dass ich es von einem versuchen umgeben haben ... schließlich Blockfehler zu unterdrücken. Wenn Fehler auftreten, gibt GetSetting einfach null zurück, während SetSetting false zurückgibt. Das erleichtert die Handhabung, aber wenn Sie die Ausnahmen benötigen, können Sie noch hinzufügen
catch (Exception) { throw; }
die Ausnahme zu werfen bis zu dem Anrufer. Oder für das Debuggen könnte man hinzufügen:
#if DEBUG
catch (Exception ex) {
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
#endif
, die die Ausnahme in den Output Fenster von Visual Studio zeigen, wenn Sie die „Debug“ Konfiguration ausgewählt haben, wird aber mit dem Code weiter.
Hinweis (Querverweis auf ein ähnliches Thema):
Der application Abschnitt ist anders, da es zwischen "User" und "Application" scope unterscheidet und es unterstützt verschiedene Datentypen, nicht nur Strings. Wenn Sie wissen möchten, wie Sie application umgehen kann, können Sie es hier (auf Stackoverflow):
How to access applicationSettings
Wenn Sie unsicher sind, ob Sie AppSettings
oder applicationSettings
verwenden sollten, dann read this bevor Sie sich entscheiden es.
Wenn Sie die Warnung 'ConfigurationSettings.AppSettings' is obsolete
begegnen, dann this hint can help you.
Speichern von beschreibbaren Einstellungen im selben Verzeichnis wie die exe ist eine schlechte Idee - auf Vista/Win7 erfordert diese Admin schreibt und wird Auslöser UAC und verursachen, dass Ihre App erhöht ausgeführt wird. Besser, App-Einstellungen woanders zu speichern. – Andy
@Andy Das scheint mir nicht richtig. Ich habe viele Programme geschrieben, die in xml-Dateien im selben Verzeichnis wie die EXE schreiben, ohne UAC auszulösen. –