Freitag, 10. Februar 2012

Home
Tipps
Bücher
Software
News / Links
Hilfe
Impressum

Sponsored by
QualityHosting

Tipp/Trick
Schlüsselwerte aus der Windows-Registratur einlesen
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.


Ein Service der TriniDat Software-Entwicklung GmbH - Am Wehrhahn 45 - 40211 Düsseldorf

  Suche
Suche starten
  Service
Leserbrief / Frage zu Access
Kontakt
  NewsLetter
NewLetter bestellen
NewsLetter abbestellen
  Partner-Seiten
HyperLink

www.trinidat.de


HyperLink

www.fulldotnet.de