读取注册表一给定键的值
我想读取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中启动项的列表并显示在文本框里。运行看不到结果
请各位帮我看看错误在哪里
我的程序如下:
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 RegQueryValueEx Lib "advapi32.dll" _
Alias "RegQueryValueExA" (ByVal hKey As Long, _
ByVal lpValueName As String, ByVal lpReserved As Long, _
lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_NONE = 0
Private Const REG_SZ = 1
Private Const REG_EXPAND_SZ = 2
Private Const REG_BINARY = 3
Private Const REG_DWORD = 4
Private Const REG_DWORD_BIG_ENDIAN = 5
Private Const REG_MULTI_SZ = 7
Private Sub Command1_Click()
Dim hKey As Long, ret As Long, lenData As Long, typeData As Long
Dim Name As String, NameList(0 To 4) As String
Dim i As Integer, s As String
Text1.Text = ""
ret = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", hKey)
If ret <> 0 Then Exit Sub
NameList(0) = ""
NameList(1) = "Adobe Reader Speed Launcher": NameList(2) = "RavTask": NameList(3) = "RfwMain"
NameList(4) = "runeip"
For i = 0 To UBound(NameList)
Name = NameList(i)
ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData)
If ret <> 0 Then
RegCloseKey hKey
Exit Sub
End If
If typeData = REG_SZ Then
s = String(lenData, Chr(0))
RegQueryValueEx hKey, Name, 0, REG_SZ, ByVal s, lenData
s = Left(s, InStr(s, Chr(0)) - 1)
Text1.SelText = IIf(Name = "", "(默认值)", Name) & " = " & s & vbCrLf
End If
Next
RegCloseKey hKey
End Sub