Schlüsselwerte aus der Windows-Registratur einlesen

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.

Weitere Tipps & Tricks

30.12.2003

Daten in die Windows-Registratur speichern

Erläuterung der beiden API Funktionen RegCreateKey und RegSetValue.

Tipp/Trick

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.

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.