Gefunden
03.07.2004 19:25:56
Folker
So mittlerweile habe ich selbst eine Lösung gefunden, indem einfach der Wert direkt aus der Registry gelesen wird. :-)
Dieser Code liest z.B. den Path aus.
Private 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
Private 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
Private Declare
Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
' RegOpenKeyEx hKey-Konstanten
' Einstellungen des aktuellen Anwenders
' z.B. Anwender- und Desktop-Einstellungen (Farb-/Soundkonfiguration
' Hardware-Konfiguration, Netzwerkprotokolle, Software-Klassen
Private Const HKEY_LOCAL_MACHINE = &H80000002
' Teil von HKEY_LOCALE_MACHINE
' Enthält Definitionen für Dokumenttypen, Dateizuordnungen
' und Shell-Schnittstelle
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_USERS = &H80000003
' Einstellungen des aktuellen Anwenders
Private Const HKEY_CURRENT_USER = &H80000001
' (Win NT/2000) Performance Dataschlüssel
Private Const HKEY_PERFORMANCE_DATA = &H80000004
' (Win 95/98) Dynamisch Daten
Private Const HKEY_DYN_DATA = &H80000006
' Aktuelle Konfiguration
Private Const HKEY_CURRENT_CONFIG = &H80000005
' RegOpenKeyEx samDesired-Konstanten
' Alle Arten von Zugiffen
Private Const KEY_ALL_ACCESS = &HF003F
' Erlaubt das Erstellen von symbolischen Links
Private Const KEY_CREATE_LINK = &H20
' Erlaubt, Unterschlüssel zu erstellen
Private Const KEY_CREATE_SUB_KEY = &H4
' Erlaubt Unterschlüssel aufzulisten
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
' Aktiviert die Änderungsbenachrichtigung (nicht unter Win95)
Private Const KEY_NOTIFY = &H10
' Erlaubt das Abfragen/Auslesen von Unterschlüssel
Private Const KEY_QUERY_VALUE = &H1
' Lesezugriff
Private Const KEY_READ = &H20019
' Erlaubt das Schreiben von Werten in Unterschlüssel
Private Const KEY_SET_VALUE = &H2
' Schreibzugriff
Private Const KEY_WRITE = &H20006
' RegQueryValueEx lpType-Konstanten
' Binärdaten in beliebigem Format (Bytefolge)
Private Const REG_BINARY = 3
' 32-Bit Zahl (Little Endian)
Private Const REG_DWORD = 4
' 32-Bit Zahl (Big Endian)
Private Const REG_DWORD_BIG_ENDIAN = 5
' nullterminierter String (vbNullChar), der nicht
' aufgelöste Verweise auf Umgebungsvariablen enthält (z.B. "%PATH%")
Private Const REG_EXPAND_SZ = 2
' symbolischer Link zu einem Unterschlüssel (Unicode)
Private Const REG_LINK = 6
' Liste nullterminierter Strings, die durch ein weiteres
' Nullzeichen (vbNullChar) beendet wird
Private Const REG_MULTI_SZ = 7
' Keine Daten
Private Const REG_NONE = 0
' Liste von Ressourcen in einer Ressourcen Map
Private Const REG_RESOURCE_LIST = 8
' nullterminierter String (vbNullChar)
Private Const REG_SZ = 1
Sub readRegKey()
Dim Retval As Long
Dim hKey As Long
Dim TmpSNum As String * 255
Retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
"System\CurrentControlSet\Control\Session Manager\Environment", 0&, KEY_READ, hKey)
If Retval <> 0 Then
MsgBox "Der Schlüssel konnte nicht geöffnet werden."
Exit Sub
End If
Retval = RegQueryValueEx(hKey, "Path", 0, REG_SZ, _
ByVal TmpSNum, Len(TmpSNum))
If Retval <> 0 Then
MsgBox "Der Schlüsselwert konnte nicht gelesen oder gefunden werden."
Exit Sub
End If
MsgBox "Path: " & Left$(TmpSNum, _
InStr(1, TmpSNum, vbNullChar) - 1), , "Produkt-Key"
Retval = RegCloseKey(hKey)
End Sub