Registry-Keys mit dem Windows Scripting Host (WSH) schreiben, lesen, löschen

Veröffentlicht: 25. Jan 2001 | Aktualisiert: 16. Jun 2004

Von Dirk Primbs

Immer wieder steht man vor der Aufgabe, Registrykeys auszulesen, zu verändern oder zu speichern. Die VB-eigenen Kommandos GetSetting und SaveSetting können zum Speichern und Lesen von Einstellungen eigener Applikationen herangezogen werden.

Da sie jedoch ausschließlich mit dem Registry-Schlüssel HKEY_CURRENT_USER\Software\VB and VBA Program Settings\ verwendet werden können, sind sie nicht immer die richtige Wahl.

Eine Alternative stellt die Verwendung des WSH für den Zugriff dar.

In Windows 98, Windows Me und Windows 2000 ist der WSH bereits enthalten. Für Windows NT und Windows 95 kann man ihn unter msdn.microsoft.com/scripting downloaden.

Dim WSHShell As Object 
Set WSHShell = CreateObject ("WScript.Shell")

Für den schreibenden Zugriff wird die Methode RegWrite benötigt:

WshShell.RegWrite "HKEY_CURRENT_USER\ScriptEngine\Value", "Some string value" 
WshShell.RegWrite "HKEY_CURRENT_USER\ScriptEngine\Key\", 1 ,"REG_DWORD"

Der erste Parameter gibt den gewünschten Schlüssel an, der zweite den Wert und der dritte (optionale) Parameter legt den verwendeten Datentyp fest.

Für den lesenden Zugriff wird die Methode RegRead verwendet:

Debug.Print WshShell.RegRead("HKEY_CURRENT_USER\ScriptEngine\Value")   
Debug.Print WshShell.RegRead("HKEY_CURRENT_USER\ScriptEngine\Key\")

Für den lesenden Zugriff wird die Methode RegRead benötigt:

WshShell.RegDelete "HKEY_CURRENT_USER\ScriptEngine\Value"  
WshShell.RegDelete "HKEY_CURRENT_USER\ScriptEngine\Key\"

Wird der Registrypfad mit einem Backslash ("\") abgeschlossen, so bezieht sich die Aktion immer auf den Standardwert des angegebenen Pfads. Andernfalls ist ein einzelner Eintrag gemeint.

Nachfolgende Keys können auch abgekürzt werden: 
HKEY_CURRENT_USER (HKCU) 
HKLM HKEY_LOCAL_MACHINE  (HKLM) 
HKCR HKEY_CLASSES_ROOT (HKCR)

Aus

Debug.Print WshShell.RegRead("HKEY_CURRENT_USER\ScriptEngine\Value")

wird so

Debug.Print WshShell.RegRead("HKCU\ScriptEngine\Value")