请问哪大侠用VB操作过注册表?
例如:
在注册表添加一个键值,修改一个键值,删除一个键值,查询一个键值,等等!

解决方案 »

  1.   

    VB自带的函数有:GetSetting 函数    
    从 Windows 注册表中的应用程序项目返回注册表项设置值。DeleteSetting 语句    
    在 Windows 注册表中,从应用程序项目里删除区域或注册表项设置。SaveSetting 语句      
    在 Windows 注册表中保存或建立应用程序项目
      

  2.   

    如果要对整注册表进行操作,就要用API来实现
      

  3.   

    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 ERROR_SUCCESS = 0&Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    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
    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 LongPrivate 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 LongPublic Const REG_SZ = 1                         ' Unicode nul terminated string
    Public Const REG_DWORD = 4                      ' 32-bit numberPublic Function GetString(hKey As Long, strPath As String, strValue As String)
      
      Dim keyhand As Long
      Dim datatype As Long
      Dim lResult As Long
      Dim strBuf As String
      Dim lDataBufSize As Long
      Dim intZeroPos As Integer
      r = RegOpenKey(hKey, strPath, keyhand)
      lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
      If lValueType = REG_SZ Then
        strBuf = String(lDataBufSize, " ")
        lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize)
        If lResult = ERROR_SUCCESS Then
            intZeroPos = InStr(strBuf, Chr$(0))
            If intZeroPos > 0 Then
                GetString = Left$(strBuf, intZeroPos - 1)
            Else
                GetString = strBuf
            End If
        End If
      End IfEnd FunctionPublic Sub SaveString(hKey As Long, strPath As String, strValue As String, strdata As String)
      
      Dim keyhand As Long
      Dim r As Long
      r = RegCreateKey(hKey, strPath, keyhand)
      r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
      r = RegCloseKey(keyhand)End SubPublic Function DelString(ByVal hKey As Long, ByVal strPath As String, ByVal strValue As String)
      
      Dim keyhand As Long
      Dim r As Long
      r = RegOpenKey(hKey, strPath, keyhand)
      r = RegDeleteValue(keyhand, strValue)
      r = RegCloseKey(keyhand)End FunctionPublic Function DelKeys(ByVal hKey As Long, ByVal strPath As String) ', ByVal strKeys As String)  Dim r As Long
      r = RegDeleteKey(hKey, strPath)End FunctionPublic Function CreateKeys(ByVal hKey As Long, ByVal strPath As String)  Dim keyhand As Long
      Dim r As Long
      r = RegCreateKey(hKey, strPath, keyhand)
      r = RegCloseKey(keyhand)End Function
    Public Function ListSubkey(ByVal hKey As Long, ByVal strPath As String) As String  Dim keyhand As Long
      Dim r As Long
      Dim strlistsubkey As String
      
      Dim sName As String, sData As String, Ret As Long, RetData As Long
      Dim indexs As Long
      
      Const ERROR_NO_MORE_ITEMS = 259&
      Const BUFFER_SIZE As Long = 255
      Ret = BUFFER_SIZE
      sName = Space(BUFFER_SIZE)
      
      r = RegOpenKey(hKey, strPath, keyhand)
      While RegEnumKeyEx(keyhand, indexs, sName, Ret, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) <> ERROR_NO_MORE_ITEMS
        If strlistsubkey = "" Then
            strlistsubkey = Left$(sName, Ret)
        Else
            strlistsubkey = strlistsubkey + "_" + Left$(sName, Ret)
        End If
        indexs = indexs + 1
      Wend
      ListSubkey = strlistsubkey
    End Function
      

  4.   

    VB操作注册表
    http://www.sqreg.com/list.asp?id=243
    http://www.sqreg.com/list.asp?id=244
    http://www.sqreg.com/list.asp?id=245
    http://www.sqreg.com/list.asp?id=246
    http://www.sqreg.com/list.asp?id=247
    http://www.sqreg.com/list.asp?id=248
    http://www.sqreg.com/list.asp?id=249
    http://www.sqreg.com/list.asp?id=250
    http://www.sqreg.com/list.asp?id=251
      

  5.   

    http://expert.csdn.net/Expert/topic/2053/2053169.xml?temp=.6511347
    http://expert.csdn.net/Expert/topic/2065/2065481.xml?temp=.4905512
    http://expert.csdn.net/Expert/topic/2064/2064300.xml?temp=.1328852
    VB操作注册表
    http://www.sqreg.com/list.asp?id=243
    http://www.sqreg.com/list.asp?id=244
    http://www.sqreg.com/list.asp?id=245
    http://www.sqreg.com/list.asp?id=246
    http://www.sqreg.com/list.asp?id=247
    http://www.sqreg.com/list.asp?id=248
    http://www.sqreg.com/list.asp?id=249
    http://www.sqreg.com/list.asp?id=250
    http://www.sqreg.com/list.asp?id=251
      

  6.   

    注册表写入,应该为
    If Result=0 Then
    注册表读取:
    Public Function ReadReg(UserName As String, ListName As String) As Boolean
      Dim Result As Long
      Dim SubKey As String
      Dim Reg_phkey As Long
      ReadReg = False
      SubKey = "Software\WellDrawData"
      UserName = String(20, Chr(0))
      listName = String(20, Chr(0))
      Result = RegOpenKeyEx(HKEY_CURRENT_USER, SubKey, 0, KEY_READ, Reg_phkey)
      If Result = ERROR_SUCCESS Then
            RegQueryValueExString Reg_phkey, "用户名", 0&, REG_SZ, UserName, LenB(UserName)
            RegQueryValueExString Reg_phkey, "序列号", 0&, REG_SZ, ListName, LenB(ListName)
            RegCloseKey (Reg_phkey)
      End If
      UserName = Left(UserName, LenB(UserName) - 1)
      listName = Left(listName, LenB(listName) - 1)
      If Trim(UserName) = "hgy" And Trim(ListName) = "0123456789" Then
              ReadReg = True
      End If
    End Function