这段代码哪里有错?

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:25:20
这是用api读注册表的所有子项的一个 程序,我想把子项显示在list2的列表里,可是我执行后list2却什么也不显示,错在哪里?
Dim HKey As Long, subkey As String, ret As Long, Name As String, Idx As Long, keyhand As Long
Idx = 0: subkey = "SOFTWARE \ Microsoft \ Windows \ CurrentVersion\"
ret = RegOpenKey(HKEY_LOCAL_MACHINE, subkey, keyhand)
Name = String(256, Chr(0))
Do
ret = RegEnumKeyEx(keyhand, Idx, Name, Len(Name), ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&)
If ret = 0 Then
List2.AddItem Left(Name, InStr(Name, Chr(0)) - 1)
Idx = Idx + 1
End If
Loop Until ret <> 0

Option Explicit

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 Long, _
ByVal lpcbClass As Long, ByVal lpftLastWriteTime As Long) As Long

Private Sub Command1_Click()
Dim KeyLen As Long, subKey As String, RET As Long
Dim Name As String, Idx As Long, keyID As Long

RET = RegOpenKey(&H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion\", keyID) '你要注意你的那个串中\两边各多了一个空格
Do While RET = 0
KeyLen = 255
Name = String(KeyLen, vbNullChar)
RET = RegEnumKeyEx(keyID, Idx, Name, KeyLen, 0&, 0&, 0&