高分请教,怎样用API删除指定的子项。好像在Win2K中用RegDeleteKey,如果想删除的子项中还有子项,不能删除。我贴了代码,那位帮我完善我
bgxy 2002-09-11 11:45:28 我的代码如下:
Private Const HKEY_LOCAL_MACHINE As Long = &H80000002
Private Const ERROR_SUCCESS As Long = 0& '成功访问
'打开指定的key的API函数
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" _
(ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal dwReserved As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long
'删除指定的seb key的API函数
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
(ByVal hKey As Long, _
ByVal lpSubKey As String) As Long
'关闭指定key的句柄的API函数
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Public Function DeleteSubKey(ByVal strSubKey As String) As Boolean
Dim lnghSubKey As Long
Dim lngResult As Long
Dim funResult As Long
DeleteSubKey = False
'打开指定的Key和Sub Key
lngResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, strSubKey, 0, KEY_ALL_ACCESS, lnghSubKey)
'如果没有发现指定的Key和Sub Key
If lngResult <> ERROR_SUCCESS Then
Err.Raise 1000, , "指定的子项不存在!"
'关闭key
Call RegCloseKey(lnghSubKey)
Exit Function
End If
'删除指定的Key和Sub Key
Dim KeyName As String
Dim lngKeyCnt As Long
Dim lngKeyLen As Long
Dim udtFileTime As FILETIME
'删除子项
funResult = RegDeleteKey(lnghSubKey, strSubKey)
'关闭key
Call RegCloseKey(lnghSubKey)
DeleteSubKey = (funResult = ERROR_SUCCESS)
End Function
如果用RegEnumKeyEx可以枚举指定子项中的子项,我的思路是枚举全部的子项,逐个删除(没有子项就可以用RegDeleteKey删除了)。那位帮我完善我的代码?