Mittwoch, 25. August 2010

Registry Tutorial

So, heute möchte ich euch mal zeigen, wie man mit C# die Registrierung (Registry) verwaltet. In dieser speichert Windows Informationen zu Programmen etc., sie lässt sich standardmäßig über den Registrierungseditor (Start - Ausführen - regedit) verwalten.
In C# läuft die Bedienung über die Klasse RegistryKey, welche in Microsoft.Win32 vorhanden ist. Für alle folgenden Codebeispiele setze ich daher
using Microsoft.Win32;
voraus.
Die Registry ist in verschiedene Kategorien eingeteilt, auf oberster Stufe der Hierarchie gibt es zum Beispiel die Gruppen HKEY_CURRENT_USER (speichert Einstellungen des aktuellen Benutzers) oder HKEY_LOCAL_MACHINE (speichert Einstellungen des kompletten Computers).
Zum "Bedienen" der Registrierung muss zuerst die Klasse RegistryKey mit einer dieser Kategorien initialisiert werden, z.B. über:

RegistryKey SampleKey = Registry.CurrentUser;

Tiefer in den Baun hinein kann mit der Funktion OpenSubKey() manövriert werden:

RegistryKey DeeperKey = SampleKey.OpenSubKey("Software\\7-Zip", true);

Der 2. Parameter vom Typ Boolean gibt an, ob der Schlüssel mit Schreibrechten geöffnet werden soll.
In DeeperKey ist dann der ausgewählte Pfad gespeichert.
Zur elementaren Bedienung gibt es nun eigentlich nur noch 5 Methoden anzugeben, ich zeige alle direkt im Beispiel:
DeeperKey.CreateSubKey("Testschlüssel");
Erstellt einen Unterschlüssel, falls dieser schon existiert wird selbiger geöffnet.
Object TestValue = DeeperKey.GetValue("Lang");
Liest den Wert "Lang" aus dem Schlüssel DeeperKey aus.
DeeperKey.SetValue("NewValue", "randomdata");
Schreibt "randomdata" in den Wert "NewValue". Existiert der Wert noch nicht, wird er angelegt.
DeeperKey.DeleteValue("NewValue");
Löscht den Wert "NewValue".
DeeperKey.DeleteSubKey("Testschlüssel");
Löscht den Unterschlüssel "Testschlüssel".
Zuguterletzt sollte, wenn die verwendeten Objekte nicht mehr verwendet werden, wie auch bei Dateien etc., die Ressource wieder freigegeben werden, was mittels der Funktion Close() aus der Klasse RegistryKey erfolgt.

Kommentare:

  1. Vielen Dank für diese nützliche Übersicht!

    AntwortenLöschen
  2. Danke ebenfalls für die Übersicht, jedoch stimme ich Dir nicht zu bei "Erstellt einen Unterschlüssel, falls dieser schon existiert wird selbiger geöffnet.".

    Denn da wird nicht in den Unterschlüssel gewechselt, wenn dieser schon existieren sollte.

    AntwortenLöschen