我如果获得注册表HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion\Run\下REG_SZ的数值数据,如数值名称为ABC。先谢谢了!由于是新手,现在什么都不会,故请高手们给出全部代码,谢谢!

解决方案 »

  1.   

    Const ERROR_NO_MORE_ITEMS = 259&
    Const HKEY_CURRENT_CONFIG = &H80000005
    Const HKEY_LOCAL_MACHINE = &H80000002
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    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 String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
    Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Private Sub Form_Load()
        
        Dim hKey As Long, Cnt As Long, sName As String, sData As String, Ret As Long, RetData As Long
        Const BUFFER_SIZE As Long = 255
        'Set the forms graphics mode to persistent
        Me.AutoRedraw = True
        Me.Print "RegEnumKeyEx"
        Ret = BUFFER_SIZE
        'Open the registry key
        If RegOpenKey(HKEY_LOCAL_MACHINE, "Hardware", hKey) = 0 Then
            'Create a buffer
            sName = Space(BUFFER_SIZE)
            'Enumerate the keys
            While RegEnumKeyEx(hKey, Cnt, sName, Ret, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) <> ERROR_NO_MORE_ITEMS
                'Show the enumerated key
                Me.Print "  " + Left$(sName, Ret)
                'prepare for the next key
                Cnt = Cnt + 1
                sName = Space(BUFFER_SIZE)
                Ret = BUFFER_SIZE
            Wend
            'close the registry key
            RegCloseKey hKey
        Else
            Me.Print "  Error while calling RegOpenKey"
        End If
        Me.Print vbCrLf + "RegEnumValue"
        Cnt = 0
        'Open a registry key
        If RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\run", hKey) = 0 Then
            'initialize
            sName = Space(BUFFER_SIZE)
            sData = Space(BUFFER_SIZE)
            Ret = BUFFER_SIZE
            RetData = BUFFER_SIZE
            'enumerate the values
            While RegEnumValue(hKey, Cnt, sName, Ret, 0, ByVal 0&, ByVal sData, RetData) <> ERROR_NO_MORE_ITEMS
                'show data
                If RetData > 0 Then Me.Print "  " + Left$(sName, Ret) + "=" + Left$(sData, RetData - 1)
                'prepare for next value
                Cnt = Cnt + 1
                sName = Space(BUFFER_SIZE)
                sData = Space(BUFFER_SIZE)
                Ret = BUFFER_SIZE
                RetData = BUFFER_SIZE
            Wend
            'Close the registry key
            RegCloseKey hKey
        Else
            Me.Print "  Error while calling RegOpenKey"
        End If
    End Sub
      

  2.   

    在百度里搜DLLS4YOU,那是个FOR VB的DLL,直接控制注册表。还有别的功能