你可以详细参考www.sqreg.com上面写明了VB 如何操作注册表

解决方案 »

  1.   

    用VB操作注册表(一)
    梦里水乡 认识登录数据库(Registry)
    我们在这里主要通过由Windows系统本身提供的注册表编辑器regedit.exe来认识登录数据库(Registry)1、Key和SubKey
     
    注册表编辑器运行时我们可以看到它的窗口结构和资源管理器很像,左边窗格的没一个文件夹图标表示一个Key.Key下面还有Subkey.我们习惯上采用文件夹的路径表示法。e.g:HKEY_LOCAL_MACHINE底下的"Software"Subkey表示成HKEY_LOCAL_MACHINE\Software.
    2、Value、Value Name、Value Data和Default Value我们用Regedit.exe打开HKEY_CLASSES_ROOT\.txt这个Key,在右窗格中显示的是Key的Value,Value可能有很多,对某个特定的Value来将,它有两个属性--Value Name和Value Data,如在此例中,HKEY_CLASSES_ROOT\.txt有一个Value-->"Content Type",这个Value的Value Name为"Content Type",Value Data为"text/plain",某些Key,还有缺省Value--Default Value,如此例中,HKEY_CLASSES_ROOT\.txt这个Key的Default Value就是我们看到的"默认"
    [Value Name],"txtfile"[Value Data]。3、存取Registry,先取Key Handle在了解了Registry的结构之后,接下来的事就是如何存取它了。就像我们存取文件必须指明文件的存取路径[目录]一样,存取Registry必须先指明Key.Key在Regedit.exe中看到的是一长串的字符串,例如: "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows",
    但在Windows内部,每个Key都对应一个Key Handle(等于一个长整数值,程序中通常以hKey表示),Windows之所以要用hkey来代表Key是为了让Registry的存取更有效率,因为整数的操作功能优于字符串,所以我们的首要任务就是取得Key的Key Handle(hKey)取得最上层的hKey 
    首先是位于最上层的Key,这些Key的hKey是固定不变的,其值如下表所示。Key hKey(Key Handle) 
    HKEY_CLASSES_ROOT &H80000000 
    HKEY_CURRENT_USER &H80000001 
    HKEY_LOCAL_MACHINE &H80000002 
    HKEY_USERS &H80000003 
    HKEY_CURRENT_CONFIG &H80000005 
    HKEY_DYN_DATA &H80000006 如果想取得上述几个Key的SubKey Handle,可以调用RegOpenKey这个API函数。其详细描述如下:VB声明 Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" 
    (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long 
    参数类型及说明:
    hKey:Key Handle
    lpSubKey:SubKey名称或路径
    phkResult:若RegOpenKey执行成功,则这一参数返回Subkey的hKey.返回值: =0,表示成功;≠0,表示失败。[注意这一点与别的API函数不太一样]调用例:
    Dim ret As Long, hKey As Long, hKey2 As Long 
    '取得"HKEY_LOCAL_MACHINE"底下的"SOFTWARE\Microsoft"这个SubKey Handle.
    ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft", hKey) 
    If ret = 0 Then 'If Success
    MsgBox "HKLM\SOFTWARE\Microsoft = " & hKey 
    End If '继续以刚才所取得的"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft"hKey为参数,再取得它的'SubKey"Windows\CurrentVersion"的handle。ret = RegOpenKey(hKey, "Windows\CurrentVersion", hKey2) 
    If ret = 0 Then 
    MsgBox "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion = " & hKey2 
    End If相关的两个API函数是:RegCreateKey[建立SubKey]和RegClose[关闭SubKey]
    详细说明:
    RegCreateKey函数:
    VB声明 Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" 
    (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    它的参数用法与RegOpenKey一样。所不同的是RegOpenKey只能打开已经有的SubKey,而RegCreateKey则可以建立SubKey,比较特别的是,如果调用RegCreateKey所建立的SubKey是一个已经存在的SubKey,则它的功能和RegOpenKey相同。由于RegCreateKey的这种特性,有的程序员干脆不用RegOpenKey,而用RegCreateKey来统一代替RegOpenKey。
    RegClose函数:
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long 
    当我们不再存取Registry时,将打开或建立的SubKey关闭是一个比较好的习惯,就正如我们在使用C语言的文件打开函数后必须要关闭一样。一个完整的例子:Option Explicit 
    Public Const HKEY_CLASSES_ROOT = &H80000000 
    Public Const HKEY_CURRENT_USER = &H80000001 
    Public Const HKEY_LOCAL_MACHINE = &H80000002 
    Public Const HKEY_USERS = &H80000003 
    Public Const HKEY_PERFORMANCE_DATA = &H80000004 
    Public Const HKEY_CURRENT_CONFIG = &H80000005 
    Public Const HKEY_DYN_DATA = &H80000006 Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" 
    (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Sub Main() 
    Dim ret As Long, hKey As Long, hKey2 As Long 
    ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft", hKey) 
    If ret = 0 Then 
    MsgBox "HKLM\SOFTWARE\Microsoft = " & hKey 
    End If ret = RegOpenKey(hKey, "Windows\CurrentVersion", hKey2) 
    If ret = 0 Then 
    MsgBox "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion = " & hKey2 
    End If 
    'Use RegCreateKey function to create subkey "HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt"
    ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt", hKey)
    If Not ret Then 
    MsgBox "Create HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt SubKey Success" 
    Else
    MsgBox "Create Subkey Operation Fail" 
    End If RegCloseKey hKey 
    RegCloseKey hKey2 
    End Sub 
      

  2.   

    reggetvalu()
    你搜索一下会找到你要的东东!!!!!!!!
      

  3.   

    http://www.sqreg.com/file/vb/reg_01.htm
    http://www.sqreg.com/file/vb/reg_02.htm
    http://www.sqreg.com/file/vb/reg_03.htm
    http://www.sqreg.com/file/vb/reg_04.htm
    http://www.sqreg.com/file/vb/reg_05.htm
    http://www.sqreg.com/file/vb/reg_06.htm
    http://www.sqreg.com/file/vb/reg_07.htm
      

  4.   

    'This program needs 3 buttons
    Const REG_SZ = 1 ' Unicode nul terminated string
    Const REG_BINARY = 3 ' Free form binary
    Const HKEY_CURRENT_USER = &H80000001
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) 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 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 RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
    Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
        Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
        'retrieve nformation about the key
        lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)
        If lResult = 0 Then
            If lValueType = REG_SZ Then
                'Create a buffer
                strBuf = String(lDataBufSize, Chr$(0))
                'retrieve the key's content
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
                If lResult = 0 Then
                    'Remove the unnecessary chr$(0)'s
                    RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
                End If
            ElseIf lValueType = REG_BINARY Then
                Dim strData As Integer
                'retrieve the key's value
                lResult = RegQueryValueEx(hKey, strValueName, 0, 0, strData, lDataBufSize)
                If lResult = 0 Then
                    RegQueryStringValue = strData
                End If
            End If
        End If
    End Function
    Function GetString(hKey As Long, strPath As String, strValue As String)
        Dim Ret
        'Open the key
        RegOpenKey hKey, strPath, Ret
        'Get the key's content
        GetString = RegQueryStringValue(Ret, strValue)
        'Close the key
        RegCloseKey Ret
    End Function
    Sub SaveString(hKey As Long, strPath As String, strValue As String, strData As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Save a string to the key
        RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
        'close the key
        RegCloseKey Ret
    End Sub
    Sub SaveStringLong(hKey As Long, strPath As String, strValue As String, strData As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Set the key's value
        RegSetValueEx Ret, strValue, 0, REG_BINARY, CByte(strData), 4
        'close the key
        RegCloseKey Ret
    End Sub
    Sub DelSetting(hKey As Long, strPath As String, strValue As String)
        Dim Ret
        'Create a new key
        RegCreateKey hKey, strPath, Ret
        'Delete the key's value
        RegDeleteValue Ret, strValue
        'close the key
        RegCloseKey Ret
    End Sub
    Private Sub Command1_Click()
        Dim strString As String
        'Ask for a value
        strString = InputBox("Please enter a value between 0 and 255 to be saved as a binary value in the registry.", App.Title)
        If strString = "" Or Val(strString) > 255 Or Val(strString) < 0 Then
            MsgBox "Invalid value entered ...", vbExclamation + vbOKOnly, App.Title
            Exit Sub
        End If
        'Save the value to the registry
        SaveStringLong HKEY_CURRENT_USER, "KPD-Team", "BinaryValue", CByte(strString)
    End Sub
    Private Sub Command2_Click()
        'Get a string from the registry
        Ret = GetString(HKEY_CURRENT_USER, "KPD-Team", "BinaryValue")
        If Ret = "" Then MsgBox "No value found !", vbExclamation + vbOKOnly, App.Title: Exit Sub
        MsgBox "The value is " + Ret, vbOKOnly + vbInformation, App.Title
    End Sub
    Private Sub Command3_Click()
        'Delete the setting from the registry
        DelSetting HKEY_CURRENT_USER, "KPD-Team", "BinaryValue"
        MsgBox "The value was deleted ...", vbInformation + vbOKOnly, App.Title
    End Sub
    Private Sub Form_Load()
        Command1.Caption = "Set Value"
        Command2.Caption = "Get Value"
        Command3.Caption = "Delete Value"
    End Sub
    看懂了你就会了
      

  5.   

    【函数】
    RegQueryValueEx【操作系统】
    Win9X:Yes
    WinNT:Yes【声明】
    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【说明】  获取一个项的设置值 【返回值】  Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 【其它】
    【参数表】
      hKey -----------  Long,一个已打开项的句柄,或者指定一个标准项名  lpValueName ----  String,要获取值的名字  lpReserved -----  Long,未用,设为零  lpType ---------  Long,用于装载取回数据类型的一个变量  lpData ---------  Any,用于装载指定值的一个缓冲区  lpcbData -------  Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字节数
      

  6.   

    说明: 返回值为 234 也是成功的。
    给你个例子:
        Dim rot As Long, hKey As Long, ret As Long
        Dim value As Long, lptype As Long, length As Long
            
        '读取键值是否存在
        RegOpenKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", hKey
        ret = RegQueryValueEx(hKey, "yesnovalue", 0, lptype, 0, length)
        If ret <> 0 And ret <> 234 Then               '不存在则建立
        RegCreateKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", hKey
        RegSetValueEx hKey, "yesnovalue", 0, REG_SZ, ByVal "0", 1
        End If
      

  7.   

    建立函数说明如下:【函数】
    RegCreateKey【操作系统】
    Win9X:Yes
    WinNT:Yes【声明】
    RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long【说明】  在指定的项下创建一个新项。如指定的项已经存在,那么函数会打开现有的项 【返回值】  Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码 【其它】
    【参数表】
      hKey -----------  Long,要打开项的句柄,或者一个标准项名  lpSubKey -------  String,欲创建的新子项。可同时创建多个项,只需用反斜杠将它们分隔开即可。例如level1\level2\newkey  phkResult ------  Long,指定一个变量,用于装载新子项的句柄