Rubrik: COM/OLE/Registry/DLL · Windows-Registry | VB-Versionen: VB5, VB6 | 10.06.02 |
Registry mit dem WSHOM.OCX nutzen Schreiben und Lesen in der Registry unter Verwendung des "Windows Script Host Object Model". | ||
Autor: Thomas Demmler | Bewertung: | Views: 18.604 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das Vorgehen des Tipps Registry im Griff bringt scheinbar einige Probleme beim Speichern eines DWORD-Wertes.
Folgende Möglichkeit macht keine Schwierigkeiten:
- Verweis (nicht als Komponente!) auf wshom.ocx im System-Verzeichnis ("Windows Script Host Object Model")
- nachfolgenden Code in ein Modul einfügen
' Enum der Wert-Typen (erweiterbar) Public Enum eREG_TYP iREG_SZ = 1 iREG_BINARY = 2 iREG_DWORD = 3 End Enum ' Enum der Registry-Zweige Public Enum eREG_KEY iHKEY_CURRENT_USER = 1 iHKEY_LOCAL_MACHINE = 2 iHKEY_CLASSES_ROOT = 3 iHKEY_USERS = 4 iHKEY_CURRENT_CONFIG = 5 End Enum
Wert in die Registry schreiben
' Prozedur zum Schreiben von Werten in die Registry ' bei nicht vorhandenen Schlüsselnm werden diese ' automatisch angelegt Public Sub gRegistry_Write(iREG_KEY As eREG_KEY, _ ByVal sKey As String, _ ByVal sEntry As String, _ ByVal varValue As Variant, _ Optional ByVal iREG_TYP As eREG_TYP = iREG_SZ) Dim oWshShell As New WshShell Dim sREG_TYP As String Dim sREG_KEY As String sREG_TYP = pTypToString(iREG_TYP) sREG_KEY = pKeyToString(iREG_KEY) ' Der Methode "RegWrite" werden nun der gewünschte ' Schlüssel, der Wert und optional der Typ des ' Wertes übergeben ... schon fertig :-) oWshShell.RegWrite sREG_KEY & sKey & "\" & sEntry, _ varValue, sREG_TYP End Sub
Wert aus Registry lesen
' Prozedur zum Lesen von Werten aus der Registry Public Function gRegistry_Read(iREG_KEY As eREG_KEY, _ ByVal sKey As String, _ ByVal sEntry As String) As Variant Dim oWshShell As New WshShell Dim sREG_KEY As String sREG_KEY = pKeyToString(iREG_KEY) ' Fehlerbehandlung aktivieren (falls Schlüssel ' / Eintrag nicht existsiert) On Local Error Resume Next ' Der Methode "RegRead" wird nun der gewünschte ' Schlüssel übergeben ... schon fertig :-) gRegistry_Read = oWshShell.RegRead(sREG_KEY & sKey & _ "\" & sEntry) ' Fehlerbehandlung wieder ausschalten On Local Error GoTo 0 End Function
Wert aus Registry löschen
' Prozedur zum Löschen von Werten aus der Registry Public Sub gRegistry_Delete(iREG_KEY As eREG_KEY, _ ByVal sKey As String, _ ByVal sEntry As String) Dim oWshShell As New WshShell Dim sREG_KEY As String sREG_KEY = pKeyToString(iREG_KEY) ' Fehlerbehandlung aktivieren (falls Schlüssel ' / Eintrag nicht existsiert) On Local Error Resume Next ' Der Methode "RegDelete" wird nun der gewünschte ' Schlüssel übergeben ... schon fertig :-) oWshShell.RegDelete sREG_KEY & sKey & "\" & sEntry ' Fehlerbehandlung wieder ausschalten On Local Error GoTo 0 End Sub
Hilfsfunktionen
' Umsetzten des übergebenen Reg.-Zweiges in den ' benötigten String Private Function pKeyToString( _ ByVal iREG_KEY As eREG_KEY) As String Dim sREG_KEY As String Select Case iREG_KEY Case iHKEY_CURRENT_USER sREG_KEY = "HKEY_CURRENT_USER\" Case iHKEY_LOCAL_MACHINE sREG_KEY = "HKEY_LOCAL_MACHINE\" Case iHKEY_CLASSES_ROOT sREG_KEY = "HKEY_CLASSES_ROOT\" Case iHKEY_USERS sREG_KEY = "HKEY_USERS\" Case iHKEY_CURRENT_CONFIG sREG_KEY = "HKEY_CURRENT_CONFIG\" End Select pKeyToString = sREG_KEY End Function ' Umsetzten des übergebenen Typs in den benötigten String Private Function pTypToString( _ ByVal iREG_TYP As eREG_TYP) As String Dim sREG_TYP As String Select Case iREG_TYP Case iREG_SZ sREG_TYP = "REG_SZ" Case iREG_BINARY sREG_TYP = "REG_BINARY" Case iREG_DWORD sREG_TYP = "REG_DWORD" End Select pTypToString = sREG_TYP End Function
Anwendungsbeispiel
' Wert schreiben gRegistry_Write iHKEY_CURRENT_USER, _ "Software\MyApplication", "RegWert", "Test", iREG_SZ
' Wert auslesen MsgBox gRegistry_Read(iHKEY_CURRENT_USER, _ "Software\MyApplication", "RegWert")
' Wert löschen gRegistry_Delete iHKEY_CURRENT_USER, _ "Software\MyApplication", "RegWert"