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. ' 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:
Beispiel für das Speichern eines Wertes unter "HKEY_CURRENT_USER\SOFTWARE\MySoftware\Test":
Dieser Tipp wurde bereits 104.515 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array Neu! sevDTA 3.0 Pro ![]() SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
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. |