Übersicht über Anwendungseinstellungen

In diesem Artikel wird erläutert, wie Einstellungsdaten für Ihre Anwendung und deren Benutzer erstellt und gespeichert werden.

Die Funktion „Anwendungseinstellungen“ von Windows Forms erleichtert das Erstellen, Speichern und Verwalten von benutzerdefinierten Einstellungen für Anwendungen und Benutzer auf dem Clientcomputer. Mit Windows Forms-Anwendungseinstellungen können Sie nicht nur Anwendungsdaten wie Datenbankverbindungszeichenfolgen, sondern auch benutzerspezifische Daten, etwa Anwendungseinstellungen, speichern. Mithilfe von Visual Studio oder benutzerdefiniertem verwaltetem Code können Sie neue Einstellungen erstellen, diese vom Datenträger lesen bzw. sie darauf schreiben, sie an Eigenschaften in Ihren Formularen binden und Einstellungsdaten vor dem Laden und Speichern überprüfen.

Anwendungseinstellungen ermöglichen Entwicklern das Speichern des Zustands ihrer jeweiligen Anwendung mit sehr wenig benutzerdefiniertem Code und stellen einen Ersatz für die dynamischen Eigenschaften in früheren Versionen von .NET Framework dar. Anwendungseinstellungen enthalten zahlreiche Verbesserungen gegenüber dynamischen Eigenschaften, die schreibgeschützt und spät gebunden sind sowie mehr benutzerdefinierte Programmierung erfordern. Die dynamischen Eigenschaftenklassen wurden in .NET Framework 2.0 beibehalten, sind aber nur noch Shell-Klassen, die nur einen schwachen Wrapper für die Anwendungseinstellungen-Klassen darstellen.

Was sind Anwendungseinstellungen?

Ihr Windows Forms-Anwendungen benötigen häufig Daten, die für die Ausführung der Anwendung von entscheidender Bedeutung sind, die Sie aber nicht direkt in den Anwendungscode einschließen möchten. Wenn Ihre Anwendung einen Webdienst oder einen Datenbankserver verwendet, sollten Sie diese Informationen in einer separaten Datei speichern, damit Sie sie später ändern können, ohne sie neu kompilieren zu müssen. Auf ähnliche Weise können Ihre Anwendungen die Speicherung von Daten erfordern, die für den aktuellen Benutzer spezifisch sind. Die meisten Anwendungen verfügen beispielsweise über Benutzereinstellungen, die das Aussehen und Verhalten der Anwendung anpassen.

Anwendungseinstellungen tragen beiden dieser Anforderungen Rechnung, indem sie eine einfache Möglichkeit bereitstellen, um sowohl anwendungsspezifische als auch benutzerspezifische Einstellungen auf dem Clientcomputer zu speichern. Mithilfe von Visual Studio oder einem Code-Editor definieren Sie eine Einstellung für eine bestimmte Eigenschaft durch Angabe ihres Namens, Datentyps und Gültigkeitsbereichs (Anwendung oder Benutzer). Sie können sogar verwandte Einstellungen in benannten Gruppen ablegen, um ihre Verwendbarkeit und Lesbarkeit zu vereinfachen. Nachdem diese Einstellungen definiert wurden, werden sie dauerhaft gespeichert und zur Laufzeit automatisch zurück in den Speicher gelesen. Eine Architektur mit austauschbaren Komponenten ermöglicht die Änderung des Mechanismus für die dauerhafte Speicherung, doch standardmäßig wird das lokale Dateisystem verwendet.

Anwendungseinstellungen funktionieren so, dass sie Daten als XML in unterschiedlichen Konfigurationsdateien (.config) dauerhaft speichern, je nachdem, ob die Einstellung anwendungsspezifisch oder benutzerspezifisch ist. In den meisten Fällen sind die anwendungsspezifischen Einstellungen schreibgeschützt. Da es sich dabei um Programminformationen handelt, müssen Sie sie in der Regel nicht überschreiben. Im Gegensatz dazu können benutzerspezifische Einstellungen zur Laufzeit problemlos gelesen und geschrieben werden, auch wenn Ihre Anwendung nur mit teilweiser Vertrauenswürdigkeit ausgeführt wird. Weitere Informationen zu teilweiser Vertrauenswürdigkeit finden Sie unter Security in Windows Forms Overview.

Einstellungen werden als XML-Fragmente in Konfigurationsdateien gespeichert. Anwendungsspezifische Einstellungen werden durch das <applicationSettings> -Element dargestellt und normalerweise in " App.exe.config" abgelegt, wobei App der Name Ihrer Hauptausführungsdatei ist. Benutzerbereichseinstellungen werden durch das <userSettings>-Element dargestellt und in user.config platziert. Sie müssen die Datei „app.exe.config“ mit Ihrer Anwendung bereitstellen. Die Architektur der Einstellungen erstellt die Datei „user.config“ bei Bedarf, wenn die Anwendung Einstellungen für diesen Benutzer zum ersten Mal speichert. Außerdem können Sie einen <userSettings> -Block in " App.exe.config" definieren, um Standardwerte für benutzerspezifische Einstellungen bereitzustellen.

Benutzerdefinierte Steuerelemente können ihre eigenen Einstellungen auch speichern, indem die IPersistComponentSettings -Schnittstelle implementiert wird, die die SaveSettings -Methode verfügbar macht. Das Windows Forms-Steuerelement ToolStrip implementiert diese Schnittstelle, um die Position von Symbolleisten und Symbolleistenelementen zwischen Anwendungssitzungen zu speichern. Weitere Informationen zu benutzerdefinierten Steuerelementen und Anwendungseinstellungen finden Sie unter Application Settings for Custom Controls.

Wo benutzerbereichsbezogene Einstellungen gespeichert werden

Der Standardanbieter LocalFileSettingsProvider speichert benutzerbereichsbezogene Einstellungen im Ordner LocalApplicationData. Wenn dieser Ordner nicht verfügbar ist, wird der Ordner ApplicationData verwendet. Ein appspezifischer Unterordner wird erstellt, um die Einstellungsdatei mit Benutzerbereich zu speichern. Der Name dieses Ordners basiert auf drei Attributen zur Standard-Assembly der App:

  • Der CompanyName der Assembly.
  • Ein Hashwert, der auf zwei Informationsabschnitten basiert:
    • Der FriendlyName der Assembly. Falls FriendlyName nicht verfügbar ist, wird der ProductName verwendet.
    • Wenn der StrongName der Assembly verfügbar ist, wird andernfalls der absolute Ordnerpfad zur Assembly verwendet.
  • Die AssemblyName.Version-Zeichenfolge.

Wenn sich eines der vorherigen Assemblydetails ändert, gehen die vorherigen Einstellungen mit Benutzerbereich verloren, da ein neuer Unterordnername generiert wird. Wenn beispielsweise eine neue Version der App veröffentlicht wird und der AssemblyName.Version-Wert von der vorherigen Version abweicht, ändert sich der Name des Unterordners, der zum Speichern der benutzerbereichsbezogenen Einstellungen verwendet wird. Wenn Benutzereinstellungen zwischen App-Versionen beibehalten werden müssen, erstellen Sie einen benutzerdefinierten Einstellungsanbieter. Weitere Informationen finden Sie unter Benutzerdefinierte Anbieter.

Einschränkungen von Anwendungseinstellungen

Sie können keine Anwendungseinstellungen in einer nicht verwalteten Anwendung verwenden, die .NET Framework hostet. Einstellungen funktionieren nicht in Umgebungen wie Visual Studio-Add-Ins, C++ für Microsoft Office, Steuerelementhosting in Internet Explorer oder Microsoft Outlook-Add-Ins und Projekte.

Sie können derzeit keine Bindung an einige Eigenschaften in Windows Forms durchführen. Das bemerkenswerteste Beispiel ist die ClientSize -Eigenschaft, weil das Binden an diese Eigenschaft zu unvorhersehbarem Verhalten zur Laufzeit führen würde. Sie können diese Probleme in der Regel umgehen, indem Sie diese Einstellungen programmgesteuert speichern und laden.

Anwendungseinstellungen besitzen keine integrierte Funktion zum automatischen Verschlüsseln von Informationen. Sie sollten nie sicherheitsrelevante Informationen wie Datenbankkennwörter in Klartext speichern. Wenn Sie solche vertraulichen Informationen speichern möchten, sind Sie als Entwickler dafür verantwortlich, dass sie geschützt werden. Wenn Sie Verbindungszeichenfolgen speichern möchten, empfehlen wir Ihnen, die integrierte Sicherheit von Windows zu verwenden und nicht zur Hartcodierung von Kennwörtern in der URL zu greifen. Weitere Informationen finden Sie unter Code Access Security and ADO.NET.

Erste Schritte mit Anwendungseinstellungen

Wenn Sie Visual Studio verwenden, können Sie im Windows Forms-Designer mithilfe der (ApplicationSettings) -Eigenschaft im Fenster Eigenschaften Einstellungen definieren. Wenn Sie Einstellungen auf diese Weise definieren, erstellt Visual Studio automatisch eine benutzerdefinierte, verwaltete Wrapperklasse, die jede Einstellung einer Klasseneigenschaft zuordnet. Visual Studio übernimmt außerdem das Binden der Einstellung an eine Eigenschaft in einem Formular oder Steuerelement, damit die Einstellungen des Steuerelements automatisch wiederhergestellt werden, wenn sein Formular angezeigt wird, und automatisch gespeichert werden, wenn das Formular geschlossen wird.

Wenn Sie eine detailliertere Kontrolle über Ihre Einstellungen benötigen, können Sie Ihre eigene benutzerdefinierte Wrapperklasse für Anwendungseinstellungen definieren. Dies geschieht durch Ableiten einer Klasse von ApplicationSettingsBase, Hinzufügen einer Eigenschaft, die jeder Einstellung entspricht, und Anwenden bestimmter Attribute auf diese Eigenschaften. Detaillierte Informationen zum Erstellen von Wrapperklassen finden Sie unter Architektur der Anwendungseinstellungen.

Sie können auch die Binding -Klasse verwenden, um Einstellungen programmgesteuert an Eigenschaften in Formularen und Steuerelementen zu binden.

Weitere Informationen