Rubrik: COM/OLE/Registry/DLL · Windows-Registry | VB-Versionen: VB4, VB5, VB6 | 14.11.03 |
Registry lesen und schreiben ohne API Wie man ohne das Windows-API Werte aus der Registry lesen, löschen oder neue Werte speichern kann, erfahren Sie mit diesem Tipp. | ||
Autor: Timon Rapp | Bewertung: | Views: 104.265 |
www.todbert.forbidden.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Man kennt ja die anderen Tipps von hier, wo man erstmal zig APIs deklarieren muss, um Zugriff auf die Windows-Registry zu erhalten. Unser heutiger Tipp geht einen einfacheren Weg. Hierzu erstellen wir drei neue Prozeduren, eine zum Lesen von Registry-Werten, eine zum Schreiben und eine zum Löschen von Registryschlüssel. Diese drei prozeduren benutzen nicht das Windows-API, sondern Windows-Scripting-Host.
Registrykey lesen
' Gibt den Wert des Schlüssels aus "Path" zurück Public Function RegRead(Path As String) As String Dim ws As Object On Error GoTo ErrHandler Set ws = CreateObject("WScript.Shell") RegRead = ws.RegRead(Path) Exit Function ErrHandler: RegRead = "" End Function
Registrykey speichern
' Schreibt den Wert aus "Value" als den Typ aus "Typ" ' in den in "Path" angegebenen Schlüssel Public Function RegWrite(ByVal Path As String, _ ByVal Value As String, _ Optional ByVal Typ As String = "REG_SZ") As Boolean Dim ws As Object On Error Goto ErrHandler Set ws = CreateObject("WScript.Shell") ws.RegWrite Path, Value, Typ RegWrite = True Exit Function ErrHandler: RegWrite = False End Function
Registrykey löschen
' Löscht den Schlüssel aus "Path" Public Function RegDelete(Path As String) As Boolean Dim ws As Object On Error Goto ErrHandler Set ws = CreateObject("WScript.Shell") ws.RegDelete Path RegDelete = True Exit Function ErrHandler: RegDelete = False End Function
Nachfolgend ein kleines Beispielprogramm. Benötigt wird eine Form, 3 Buttons und eine Textbox.
Die Textbox dient hierbei zur Eingabe des Registry-Pfades.
' Lesen Private Sub Command1_Click() Dim Inhalt As String Inhalt = RegRead(Text1.Text) If Inhalt = "" Then MsgBox "Der Schlüssel existiert nicht!" Else MsgBox "Inhalt des Schlüssels: " & Inhalt End If End Sub
' Schreiben Private Sub Command2_Click() Dim sValue As String If MsgBox("Schlüssel überschreiben? " & _ "Der alte Wert geht dadurch verloren.", vbYesNo) = vbYes Then sValue = InputBox("Geben Sie den neuen Wert ein:") If RegWrite(Text1.Text, sValue) Then MsgBox "Neuer Wert wurde gespeichert." Else MsgBox "Fehler beim Speichern des Wertes." End If End If End Sub
' Löschen Private Sub Command3_Click() If MsgBox("Schlüssel wirklich Löschen?", vbYesNo) = vbYes Then If RegDelete(Text1.Text) Then MsgBox "Schlüssel wurde gelöscht." Else MsgBox "Schlüssel konnte nicht gelöscht werden!" End If End If End Sub
Hinweis:
Folgende "Kürzel" sind in der Pfadangabe zu verwenden:
- HKLM\: HKEY_LOCAL_MACHINE
- HKCU\: HKEY_CURRENT_USER
Beispiel für das Speichern eines Wertes unter "HKEY_CURRENT_USER\SOFTWARE\MySoftware\Test":
RegWrite "HKCU\SOFTWARE\MySoftware\Test", "Neuer Wert"