VB.NET: Registry lesen, schreiben und löschen

Die Windows Registry ist die lokale Datenbank im Hintergrund, in der Einstellungen zu Softwareprodukten gespeichert ist. Diese kann man mit VB.NET lesen, schreiben und auch Werte löschen:

  • lesen
  • schreiben
  • löschen
Windows Registry mit VB.NET

Windows Registry mit VB.NET

Die Windows Registry ist für komplexe Anwendungen unverzichtbar. Denn es werden Keys, Werte und Eigenschaften gespeichert. Natürlich gibt es in der Registry auch unterschiedliche Bereiche:

  • HMLM (Local Machine) für systemweite Einstellungen
  • HKCU (Current User) für Einstellungen des angemeldeten Users

Mit VB.NET kann man Registry Einträge erstellen, auslesen oder wieder löschen. Wir haben ein Beispiel vorbereitet, in dem wir eine Software zum Windows Autostart hinzufügen. Außerdem wird geprüft, ob der Eintrag vorhanden ist und gelöscht wird dieser auch.

  • Erstellen = SetValue
  • Lesen = GetValue
  • Löschen = DeleteValue
Windows Autostart VB.NET

Erstellen / Schreiben

Das einfache Schreiben in die Windows Registry erstellt zugleich einen neuen Eintrag, falls dieser noch nicht vorhanden ist. In der Programmiersprache VB.NET nutzt man hierzu den Befehl SetValue:

My.Computer.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True).SetValue(Application.ProductName, Application.ExecutablePath)

Nach SetValue wird erst der Name des Eintrags angegeben, danach der Wert. In diesem Beispiel wird die Software in den Windows Autostart hinzugefügt. Damit der neue Eintrag an der richtigen Stelle erstellt wird, muss mit OpenSubKey der Pfad geöffnet werden. Mit True gibt man an, dass der Eintrag bearbeitet werden darf. So einfach schreibt man mit VB.NET in die Windows Registry.

Lesen / Überprüfen

Mit einem ähnlichen Befehl kann man in VB.NET überprüfen, ob ein Registry Eintrag vorhanden ist.

Wenn wir bei diesem Beispiel des Windows Autostart bleiben kann überprüft werden, ob der Autostart-Eintrag noch besteht.

If My.Computer.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run").GetValue(Application.ProductName) Is Nothing Then
            'Eintrag ist nicht vorhanden
        Else
            'Reg Eintrag besteht derzeit / vorhanden
        End If

Hier nutzt man den VB.NET Befehl GetValue. Es wird in einer IF-Abfrage geprüft, ob dieser Eintrag in der Windows Registry vorhanden ist. Wenn dieser nicht vorhanden sein sollte (Is Nothing), dann könnte man den Autostart Wert erneut schreiben.

Löschen

Möchte man das Programm nicht mehr im Windows Autostart haben, so könnte man den Reg Wert mit DeleteValue löschen. Auch hier wird wieder der Pfad mit .OpenSubKey angegeben:

My.Computer.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True).DeleteValue(Application.ProductName)

All diese VB.NET Beispiele nutzen Current user. Möchte man die Local Machine in der Registry abfragen, neue Werte schreiben oder einfach Einträge löschen, so muss natürlich My.Computer.Registry.LocalMachine.OpenSubKey() verwendet werden.

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

sidebar
>