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

https://www.vbarchiv.net
Rubrik: COM/OLE/Registry/DLL · Windows-Registry   |   VB-Versionen: VB5, VB610.06.02
Registry mit dem WSHOM.OCX nutzen

Schreiben und Lesen in der Registry unter Verwendung des "Windows Script Host Object Model".

Autor:   Thomas DemmlerBewertung:  Views:  18.604 
ohne HomepageSystem:  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:

  1. Verweis (nicht als Komponente!) auf wshom.ocx im System-Verzeichnis ("Windows Script Host Object Model")
  2. 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"



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.