#Const USEWINTLB = 0
#If USEWINTLB = 0 Then
' Die Typelib win.tlb wird nicht verwendet.
Const ERROR_SUCCESS = 0
Const HKEY_LOCAL_MACHINE = &H80000002
Const KEY_ALL_ACCESS = &HF003F
Const ERROR_NO_MORE_ITEMS = &H103
Const cMaxPath = &H104
Type FILETIME
dwHighDateTime As Long
dwLowDateTime As Long
End Type
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 RegCloseKey Lib "advapi32.dll" ( _
ByVal hKey As Long) As Long
Declare Function RegEnumKeyEx Lib "advapi32.dll" _
Alias "RegEnumKeyExA" ( _
ByVal hKey As Long, _
ByVal dwIndex As Long, _
ByVal lpName As String, _
lpcbName As Long, _
ByVal lpReserved As Long, _
ByVal lpClass As String, _
lpcbClass As Long, _
lpftLastWriteTime As Any) As Long
#End If
Sub main()
On Error GoTo Err_Exit
Dim hKey&
Dim SubKey$
Dim hKeyResult&
Dim NodeIndex&
Dim Result&
Dim lpName As String
Dim lpcbName As Long
Dim lpClass As String
Dim lpcbClass As Long
Dim lpftLastWriteTime As FILETIME
hKey = HKEY_LOCAL_MACHINE
SubKey = "Software"
' Registry-Knoten öffnen
If ERROR_SUCCESS <> RegOpenKeyEx(hKey, SubKey, _
0&, KEY_ALL_ACCESS, hKeyResult) Then
Err.Raise Number:=vbObjectError, _
Description:="Registry-Knoten konnte nicht geöffnet werden!"
End If
lpName = String(cMaxPath, 0)
lpClass = String(cMaxPath, 0)
NodeIndex = 0
Do
lpcbName = cMaxPath
lpcbClass = cMaxPath
Result = RegEnumKeyEx(hKeyResult, NodeIndex, lpName, lpcbName, 0&, _
lpClass, lpcbClass, lpftLastWriteTime)
Select Case Result
Case ERROR_NO_MORE_ITEMS
' Keine weiteren Subknoten vorhanden.
Exit Do
Case ERROR_SUCCESS
NodeIndex = NodeIndex + 1
' Namen des Subknoten in den Debug-Screen ausgeben.
Debug.Print Left$(lpName, lpcbName)
Case Else
Err.Raise Number:=vbObjectError, _
Description:="Fehler beim Auflisten der Registry-Knoten!"
End Select
Loop
' Registry-Knoten schließen
If ERROR_SUCCESS <> RegCloseKey(hKeyResult) Then
Err.Raise Number:=vbObjectError, _
Description:="Registry-Knoten konnte nicht geschlossen werden!"
End If
Sub_Exit:
Exit Sub
Err_Exit:
MsgBox Err.Description, vbInformation, "ERROR 0x" & Hex(Err.Number)
Resume Sub_Exit
End Sub