Ja, es ist möglich, zu speichern die Konfiguration - aber das hängt weitgehend von der Art und Weise ab, wie Sie es tun wollen. Lassen Sie mich die technischen Unterschiede beschreiben, damit Sie die Optionen, die Sie haben, verstehen können:
Zunächst müssen Sie unterscheiden, ob Sie die applicationSettings o AppEinstellungen in Ihrem *.exe.config
(alias App.config
in Visual Studio) Datei - es gibt grundlegende Unterschiede, wird hier beschrieben .
Beide bieten unterschiedliche Möglichkeiten, Änderungen zu speichern:
-
El AppEinstellungen ermöglichen das Lesen und Schreiben direkt in die Konfigurationsdatei über config.Save(ConfigurationSaveMode.Modified);
wobei config definiert ist als:
config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
-
El applicationSettings zu lesen erlauben, aber wenn Sie Änderungen schreiben (über Properties.Settings.Default.Save();
) wird sie für jeden Benutzer einzeln geschrieben und an einem speziellen Ort gespeichert (z.B. C:\Documents and Settings\USERID\Local Settings\Application Data\FIRMNAME\WindowsFormsTestApplicati_Url_tdq2oylz33rzq00sxhvxucu5edw2oghw\1.0.0.0
). Unter Hans Passant erwähnt in seiner Antwort, liegt dies daran, dass ein Benutzer in der Regel eingeschränkte Rechte für die Programmdateien hat und nicht in diese schreiben kann, ohne die UAC-Eingabeaufforderung aufzurufen. Ein Nachteil ist, dass Sie, wenn Sie in Zukunft Konfigurationsschlüssel hinzufügen, diese mit jedem Benutzerprofil synchronisieren müssen.
Aber es gibt noch eine Reihe anderer Möglichkeiten:
-
Seit .NET Core (und .NET 5 und 6) ist ein 3. Option ist die appsettings.json
Datei, die die Konfigurationsabstraktion von Microsoft verwendet. Aber normalerweise benutzt WinForms sie nicht, deshalb erwähne ich sie nur der Vollständigkeit halber. Wie auch immer, hier sind einige Referenzen wie man lesen y schreiben. die Werte. Alternativ können Sie auch Newtonsoft JSON zum Lesen und Schreiben el appsettings.json
Datei, aber sie ist nicht darauf beschränkt: Sie können mit dieser Methode auch Ihre eigenen json-Dateien erstellen.
-
Wie in der Frage erwähnt, gibt es eine 4. Möglichkeit: Wenn Sie die Konfigurationsdatei als XML-Dokument, können Sie laden, ändern und speichern, indem Sie die System.Xml.Linq.XDocument
Klasse. Es ist nicht erforderlich, eine benutzerdefinierte XML-Datei zu verwenden, Sie können die vorhandene Konfigurationsdatei lesen; für die Abfrage von Elementen können Sie sogar Linq-Abfragen verwenden. Ich habe ein Beispiel gegeben aquí überprüfen Sie die Funktion GetApplicationSetting
dort in der Antwort.
-
A 5. Option ist die Speicherung von Einstellungen in der Registrierung. Wie Sie das tun können, wird beschrieben aquí .
-
Und nicht zuletzt gibt es eine 6. Möglichkeit : Sie können die Werte in der Umwelt (Systemumgebung oder Umgebung Ihres Kontos). Geben Sie in den Windows-Einstellungen (das Zahnrad im Windows-Menü) in der Suchleiste "Umgebung" ein und fügen Sie sie dort hinzu oder bearbeiten Sie sie. Um sie zu lesen, verwenden Sie
var myValue = Environment.GetEnvironmentVariable("MyVariable");
.
Beachten Sie, dass Ihre Anwendung normalerweise neu gestartet werden muss, um die aktualisierten Umgebungseinstellungen zu erhalten.
Wenn Sie benötigen Verschlüsselung zum Schutz Ihrer Werte, auschecken este Antwort. Sie beschreibt, wie man Microsofts DPAPI verwendet, um Werte verschlüsselt zu speichern.
Und wenn Sie Ihre eigenen Dateien, ob XML oder JSON, unterstützen wollen, könnte es nützlich sein, das Verzeichnis der laufenden Assembly zu kennen:
var assemblyDLL = System.Reflection.Assembly.GetExecutingAssembly();
var assemblyDirectory = System.IO.Path.GetDirectoryName(assemblyDLL.Location);
Sie können verwenden assemblyDirectory
als Basisverzeichnis zum Speichern Ihrer Dateien.