Hallo
warum funktioniert dies nicht so??
habe diesen tip von hier geholt
Private Sub Command1_Click()
Dim sValues() As String
Dim I As Integer
sValues = Reg_GetAllKeys(HKEY_CURRENT_USER, _
"Software\Microsoft\MSNMessenger\PerPassportSettings\3161509512\")
'sValues = Reg_GetAllKeys(HKEY_CURRENT_USER, _
' "Software\Microsoft\Windows\CurrentVersion\Run")
For I = 0 To UBound(sValues)
List1.AddItem sValues(I)
Next I
End Sub 'hier der code zum modul
Option Explicit
' zunächst die benötigten API-Deklarationen
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 RegEnumValue Lib "advapi32.dll" _
Alias "RegEnumValueA" (ByVal hKey As Long, _
ByVal dwIndex As Long, ByVal lpValueName As String, _
lpcbValueName As Long, ByVal lpReserved As Long, _
lpType As Long, lpData As Byte, lpcbData 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
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_CURRENT_USER = &H80000001
Const KEY_QUERY_VALUE = &H1
Const REG_SZ = 1
Const ERROR_SUCCESS = 0
' Ermitteln aller Schlüsselnamen und der
' dazugehörigen Werte eines Registry-Zweigs
Public Function Reg_GetAllKeys(ByVal hKey As Long, _
ByVal sFolder As String) As Variant
Dim sKeyName As String
Dim sBuffer As String
Dim bLen As Long
Dim lType As Long
Dim lHandle As Long
Dim lResult As Long
Dim nCount As Long
Dim tmp(0 To 254) As Byte
ReDim sValues(0) As String
' Registry-Zweig öffnen
lResult = RegOpenKeyEx(hKey, sFolder, 0&, _
KEY_QUERY_VALUE, lHandle)
If lResult = ERROR_SUCCESS Then
nCount = 0
Do
sKeyName = Space(255)
lResult = RegEnumValue(lHandle, nCount, sKeyName, _
Len(sKeyName), 0&, 0&, tmp(0), 256)
If lResult <> ERROR_SUCCESS Then Exit Do
' Schlüsselname
ReDim Preserve sValues(nCount)
sKeyName = Left$(sKeyName, InStr(sKeyName, _
vbNullChar) - 1)
' Wert des Schlüssels
sBuffer = Space$(255)
bLen = Len(sBuffer)
lType = REG_SZ
lResult = RegQueryValueEx(lHandle, sKeyName, 0&, _
lType, ByVal sBuffer, bLen)
If lResult = ERROR_SUCCESS Then
sBuffer = Left$(sBuffer, bLen)
While Right$(sBuffer, 1) = Chr$(0)
sBuffer = Left$(sBuffer, Len(sBuffer) - 1)
Wend
Else
sBuffer = ""
End If
' Schlüsselname;Wert
sValues(nCount) = sKeyName + ";" + sBuffer
' Zähler um eins erhöhen
nCount = nCount + 1
Loop
' Registry-Zweig schliessen
RegCloseKey lHandle
End If
Reg_GetAllKeys = sValues
End Function |