麻烦大家看一下,为什么我的代码会进入死循环?有没有办法解决?
代码如下
Private Function enumkey(subkey As String, zikey As String)
Dim hKey As Long, ret As Long, Name As String, idx As Long
idx = 0
Name = String(256, Chr(0))
Do
Select Case subkey
Case "HKEY_CURRENT_USER"
ret = RegOpenKey(HKEY_CURRENT_USER, zikey, hKey)
Case "HKEY_LOCAL_MACHINE"
ret = RegOpenKey(HKEY_LOCAL_MACHINE, zikey, hKey)
Case "HKEY_USERS"
ret = RegOpenKey(HKEY_USERS, zikey, hKey)
Case "HKEY_CLASSES_ROOT"
ret = RegOpenKey(HKEY_CLASSES_ROOT, zikey, hKey)
End Select
If ret = 0 Then
ret = RegEnumKey(hKey, idx, Name, Len(Name))
enumkey = Left(Name, InStr(Name, Chr(0)) - 1)
List1.AddItem enumkey
If Name = "" Then Exit Function
enumkey subkey, zikey + "\" + Name
Exit Do
End If
idx = idx + 1
Loop Until ret <> 0
RegCloseKey hKey
End Function