vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: COM/OLE/Registry/DLL · Windows-Registry   |   VB-Versionen: VB4, VB5, VB614.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 RappBewertung:  Views:  103.405 
www.todbert.forbidden.deSystem:  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"



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.