我要删除一个项,及其子项,在知道其子项名称时。我可以删除了他们。我可以先删除子项里的字符串,再删除子项,再删除项。如,有一个项ABC其子项是DEF,里面的字符串是"启动.exe"。那我可以先删除"启动.exe"。再删除DEF,再删除ABC。我要如何才能做到。只要删除ABC就可以整个删除ABCT和 DEF和"启动.exe"。而不用一个一个删除呢。我用的是下面的方法Private Sub Form_Load()Set Reg = CreateObject("Wscript.shell")
Reg.RegDelete("HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\ABC\DEF\启动.exe")
RegDeleteKey"HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\ABC\DEF" 
RegDeleteKey"HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN\ABC\"
Set Reg = Nothing
End Sub
Reg.RegDelete是删除字符串用的就是删除我这里的。启动.exe
RegDeleteKey是删除项目的。用这个就不能删除字符串了。
我应该用什么方法叉可以实现只要删除ABC就行了。高手帮忙

解决方案 »

  1.   

    你试试直接用API:
    RegDeleteKey——删除Key或者SubKeyRegDeleteKeyEx():同RegDeleteKeyEx()
    Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long   参数:   hKey:Key Handle   lpSubKey:SubKey名称或者路径,若传入""[空字符串],表示删除Key本身。   返回值: =0,表示成功;≠0,表示失败。   示例Dim hKey,ret As Long 
    ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt\xiaoyuer", hKey) 
    ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt", hKey)
    ret = RegDeleteKey(hKey, "xiaoyuer")'删除HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt\xiaoyuer   注意:   如果我们利用RegDeleteKey函数删除一个含有SubKey的Key时,对于Windows98和Winnt来讲是不一样的。比如我们把上面的删除调用改成ret = RegDeleteKey(hKey, ""),则在windows98下,它会连hongqt下的xiaoyuer一起删除,而在winnt下则会报错。
    如果不行则要用:
    RegEnumKey——列出某Key的所有SubKey  RegEnumKeyEx():返回注册表键及其子键的详细信息。Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long    参数说明:   hKey:Key Handle   dwIndex:欲读取的SubKey的顺序   lpName:返回所读取的SubKey的名称   cbName:传入lpName的字符串长度。   返回值: =0,表示成功;≠0,表示失败。  示例:Dim hKey As Long, ret As Long, Name As String, Idx As Long 
    List1.Clear 
    Idx = 0 
    Name = String(256, Chr(0)) 
    Do 
    ret = RegEnumKey(HKEY_CURRENT_USER, Idx, Name, Len(Name)) 
    If ret = 0 Then 
    List1.AddItem Left(Name, InStr(Name, Chr(0)) - 1) 
    Idx = Idx + 1 
    End If 
    Loop Until ret <> 0  RegDeleteValue——删除某Key的某一名称
    Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long    参数:   hKey:Key Handle   lpValueName: Value名称,如果想删除默认值的话,传入""[空字符串]即可。    返回值: =0,表示成功;≠0,表示失败。  示例:    '我们假设在HKEY_CURRENT_USER\Software\SetValue有:
    '预设值——VB操作注册表
    'str1——我爱我的祖国
    '我们要删除这两个Value 
    ret = RegOpenKey(HKEY_CURRENT_USER, "Software\SetValue", hKey) 
    If ret = 0 Then 
    RegDeleteValue hKey, "Str1" 
    MsgBox "已删除HKCU\Software\SetValueSubKeyStr1Value" 
    RegDeleteValue hKey, "" 
    MsgBox "已删除HKCU\Software\SetValueSubKey‘预设值’" 
    End If 最后调RegDeleteKey
      

  2.   

    临时生成一个reg进行导入操作 可以直接把目录删掉