Tipp 6.6 - String Registry-Schlüssel ermitteln

Wie kann ich einen Registry-Schlüssel vom Typ String ermitteln?

Mit dieser Funktion können Sie einen Registry-Schlüssel vom Typ String ermitteln. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: RegOpenKey, RegQueryValueEx, RegCloseKey - REG_KEYS

Beispiel:

Option Explicit
 
Public Enum REG_KEYS
  HKEY_CLASSES_ROOT = &H80000000
  HKEY_CURRENT_USER = &H80000001
  HKEY_LOCAL_MACHINE = &H80000002
  HKEY_USERS = &H80000003
  HKEY_PERFORMANCE_DATA = &H80000004
  HKEY_CURRENT_CONFIG = &H80000005
  HKEY_DYN_DATA = &H80000006
End Enum
 
Public Const ERROR_SUCCESS As Long = 0&
Public Declare Function RegOpenKey _
    Lib "advapi32.dll" Alias _
    "RegOpenKeyA" _
    (ByVal hKey As Long, _
    ByVal lpSubKey As String, _
    phkResult As Long) As Long
Public Declare Function RegQueryValueEx _
    Lib "advapi32.dll" Alias _
    "RegQueryValueExA" _
    (ByVal hKey As Long, _
    ByVal sValue As String, _
    ByVal lReserved As Long, _
    lType As Long, _
    ByVal sData As String, _
    lcbData As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" _
    (ByVal hKey As Long) As Long
 
Public Function GetSettingString( _
                ByVal lKey As REG_KEYS, _
                sPath As String, _
                sValue As String, _
                Optional sDefault As String = "") As String
  '// -----------------------------------------------------
  '// Methode:   | Ermittelt e. Stringwert aus der Registry
  '// -----------------------------------------------------
  '// Parameter: | lKey - Übergeordneter Schlüssel
  '//            | sPath - Pfad des Schlüssels
  '//            | sValue - Name des Wertes
  '//            | sDefault - Standard Rückgabewert
  '// -----------------------------------------------------
  '// Rückgabe:  | Ermittelter Wert
  '// -----------------------------------------------------
  '// Autor:     | Stefan Kulpa
  '//            | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispiel:  |?GetSettingString(HKEY_LOCAL_MACHINE, _
  '//            |           "SOFTWARE" & _
  '//            |           App.CompanyName & "\" & _
  '//            |           App.EXEName, "Caption")
  '// -----------------------------------------------------
  Const REG_SZ        As Long = 1
  Dim lCurKey         As Long
  Dim lValueType      As Long
  Dim lRegResult      As Long
  Dim lDataBufferSize As Long
  Dim sBuffer         As String
 
  GetSettingString = sDefault
  lRegResult = RegOpenKey(lKey, sPath, lCurKey)
  lRegResult = RegQueryValueEx(lCurKey, _
      sValue, 0&, lValueType, ByVal 0&, lDataBufferSize)
  If lRegResult <> ERROR_SUCCESS Then
    If lValueType = REG_SZ Then
      sBuffer = String(lDataBufferSize, 0)
      lRegResult = RegQueryValueEx(lCurKey, _
          sValue, 0&, 0&, ByVal sBuffer, lDataBufferSize)
      If lRegResult = ERROR_SUCCESS Then
        GetSettingString = VBA.Left$(sBuffer, _
            VBA.InStr(sBuffer, vbNullChar) - 1)
      End If
    End If
  End If
  lRegResult = RegCloseKey(lCurKey)
 
End Function