Schlüsselwerte aus der Windows-Registratur einlesen

Veröffentlicht am 30.12.2003

Spezielle Windows API-Funktionen erlaubt das Einlesen und Abspeichern von Registratur-Schlüsselwerten.

Anstelle von INI-Dateien arbeitet Windows seit der Version 95 hauptsächlich mit der sogenannten Registratur. Jeder Eintrag der Registratur besteht aus einem Schlüssel und einer Reihe von Werten. 

Microsoft Excel speichert zum Beispiel den Namen des Standardordners für Dokumente in der Registratur. Um diesen Wert von Access aus einzulesen, werden zwei API-Funktionen benötigt, die zusammen mit einigen VBA-Konstanten in einem Modul deklariert werden müssen: 

Public Const HKEY_CURRENT_USER = &H80000001 
Public Const KEY_QUERY_VALUE = &H1 
Public Const ERROR_SUCCESS = 0& 
Public Const REG_SZ = 1 
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
"RegOpenKeyExA" (ByVal hKey As Long, _ 
ByVal lpSubKey As String, ByVal ulOptions As Long, _ 
ByVal samDesired As Long, phkResult As Long) As Long 
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, _ 
ByVal lpValueName As String, _ 
ByVal lpReserved As Long, lpType As Long, lpData As Any, _ 
lpcbData As Long) As Long 
Declare Function RegCloseKey Lib "advapi32.dll" _ 
(ByVal hKey As Long) As Long 

Folgenden VBA-Code können Sie einsetzen, um den Excel-Startordner anhand der oben deklarierten API-Funktionen zu ermitteln:

Public Function ExcelOrdnerAbfragen() 
    Dim strSchlüssel As String, lSchlüssel As Long 
    Dim strWert As String, lWertLänge As Long, dtWert As Long 
    strSchlüssel = "Software\Microsoft\Excel\9.0\Microsoft Excel"
    If RegOpenKeyEx(HKEY_CURRENT_USER, strSchlüssel, _ 
        ByVal 0&, KEY_QUERY_VALUE, lSchlüssel) _
        = ERROR_SUCCESS Then 
    strWert = String(255, 0) 
    lWertLänge = Len(strWert) 
    dtWert = REG_SZ 
    If RegQueryValueEx(lSchlüssel, "DefaultPath", ByVal 0&, dtWert, ByVal strWert, lWertLänge) = ERROR_SUCCESS Then 
        strWert = Left(strWert, lWertLänge)
    End If 

    RegCloseKey lSchlüssel
    Debug.Print strWert 
End If 
End Function 

Hier ist nur wichtig, dass Sie die jeweiligen Stringvariablen mit NULL-Werten initialisieren, und dass Sie NULL-Zeiger als ByVal 0& übergeben. 

Die Funktion öffnet zunächst die Registratur mit der Berechtigung zum Abfragen des Schlüssels Software\Microsoft\Excel\9.0\Microsoft Excel. Ist diese Aktion gelungen, so wird der Schlüsselwert mit der Funktion RegQueryValueEx in den Variable strWert eingelesen, der anschließend von den überflüssigen NULL-Zeichen befreit. 

Mit der Funktion RegCloseKey wird die Registratur ordnungsgemäß wieder geschlossen.

Weiterführende Links:

Unsere Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

JETZT KONTAKTIEREN

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.

JETZT KONTAKTIEREN