bei diesem beispiel würde der schlüssel "Run" und alle seine
unterschlüssel gelöscht (also mit vorsicht zu genießen). die
funktion gibt True zurück wenn sie erfolgreich war.Const ERROR_NO_MORE_ITEMS = 259&
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As _
Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private 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
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" ( _
ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Function delregkeytree(mainkey As Long, initkey As String) As Boolean
Dim notpossible As Boolean
Dim hKey As Long
Dim Cnt As Long
Dim sName As String
Dim Ret As Long
Dim initlen As Long
Const BUFFER_SIZE As Long = 255
Ret = BUFFER_SIZE
initlen = Len(Left(initkey, InStrRev(initkey, "\") - 1))
If RegOpenKey(mainkey, initkey, hKey) <> 0 Then
RegCloseKey hKey
delregkeytree = False
Exit Function
End If
RegCloseKey hKey
sName = Space(BUFFER_SIZE)
Do
RegOpenKey mainkey, initkey, hKey
While RegEnumKeyEx(hKey, Cnt, sName, Ret, ByVal 0&, vbNullString, ByVal 0&, _
ByVal 0&) <> ERROR_NO_MORE_ITEMS
success = RegDeleteKey(hKey, Left(sName, Ret))
If success <> 0 Then
If notpossible = False Then
initkey = initkey & "\" & Left(sName, Ret)
End If
Cnt = Cnt + 1
notpossible = True
End If
sName = Space(BUFFER_SIZE)
Ret = BUFFER_SIZE
Wend
If notpossible = False Then
lastkey = Right(initkey, Len(initkey) - InStrRev(initkey, "\"))
initkey = Left(initkey, InStrRev(initkey, "\") - 1)
RegOpenKey mainkey, initkey, hKey
success = RegDeleteKey(hKey, lastkey)
End If
Cnt = 0
RegCloseKey hKey
notpossible = False
Loop Until Len(initkey) = initlen
delregkeytree = True
End Function
Private Sub Command1_Click()
Debug.Print delregkeytree(HKEY_CURRENT_USER, _
"SOFTWAREMicrosoftWindowsCurrentVersionRun")
End Sub |