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.
Verwendete 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