我想对读写注册表,可是不知道怎么做,请大家帮帮忙,提供一下读写注册表的函数,最好有一个例子,谢谢!

解决方案 »

  1.   

    给你贴个完整的例子:
    首先新建一个工程,在新建的窗体上添加以下控件并设置相应属性: 
    控件名 属性 值 
    Label1 Caption 注册表键值: 
    Label2 Caption 注册姓名: 
    Label3 Caption 空 
    Label4 Caption 注册公司: 
    Label5 Caption 空 
    Label6 Caption 空 
    Text1 Text 空 
    Text2 Text 空 
    Command1 Caption 写入注册表 
    Command2 Caption 退出 
    然后,在程序的声明部分添加如下代码: 
    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 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 
    Const error_success = 0& 
    Const error_baddb = 1009& 
    Const error_badkey = 1010& 
    Const error_cantopen = 1011& 
    Const error_cantread = 1012& 
    Const error_cantwrite = 1013& 
    Const error_registry_recovered = 1014& 
    Const error_registry_corrupt = 1015& 
    Const error_registry_io_failed = 1016& 
    Const hkey_classes_root = &H80000000 
    Const hkey_current_user = &H80000001 
    Const hkey_local_machine = &H80000002 
    Const REG_SZ = 1 
    Const regkey = "softwareMy SoftMy program" 
      

  2.   

    接着为各个控件添加代码,代码如下: 
    Private Sub Command1_Click() 
    Dim keyvalue As String 
    Dim retvalue As Long 
    Dim keyid As Long 
    retvalue = RegCreateKey(hkey_local_machine, regkey, keyid) 
    keyvalue = Text1.Text 
    retvalue = RegSetValueEx(keyid, "注册名", 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) + 1) 
    keyvalue = Text2.Text 
    retvalue = RegSetValueEx(keyid, "注册公司", 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) + 1) 
    If Text1.Text <> "" And Text2.Text <> "" Then 
    Label3.Caption = Text1.Text 
    Label5.Caption = Text2.Text 
    End If 
    End Sub Private Sub Command2_Click() 
    Unload Me 
    End 
    End Sub Private Sub Form_Load() 
    Dim retvalue As Long 
    Dim result As Long 
    Dim keyid As Long 
    Dim keyvalue As String 
    Dim subkey As String 
    Dim bufsize As Long 
    Label6.Caption = regkey 
    retvalue = RegCreateKey(hkey_local_machine, regkey, keyid) 
    If retvalue = 0 Then 
    subkey = "注册名" 
    retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, 0&, bufsize) 
    If bufsize < 2 Then 
    keyvalue = "" 
    retvalue = RegSetValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) + 1) 
    Else 
    keyvalue = String(bufsize + 1, " ") 
    retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, bufsize) 
    keyvalue = Left$(keyvalue, bufsize - 1) 
    Text1.Text = keyvalue 
    End If 
    Label3.Caption = keyvalue subkey = "注册公司" 
    retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, 0&, bufsize) 
    If bufsize < 2 Then 
    keyvalue = "" 
    retvalue = RegSetValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, Len(keyvalue) + 1) 
    Else 
    keyvalue = String(bufsize + 1, " ") 
    retvalue = RegQueryValueEx(keyid, subkey, 0&, REG_SZ, ByVal keyvalue, bufsize) 
    keyvalue = Left$(keyvalue, bufsize - 1) 
    Text2.Text = keyvalue 
    End If 
    Label5.Caption = keyvalue 
    End If 
    End Sub 
    好了,存盘,按F5运行程序,在两个Text中分别写入你的“注册姓名”和“注册公司”的名称,然后单击 
    “写入注册表”按钮,现在打开“注册表编辑器”,找到HKEY_LOCAL_MACHINESOFTWAREMy SoftMy Program,看看右边是不是生成了“注册名”和“注册公司”两个键值
      

  3.   

    Dim hKey As Long, ret As Long, lenData As Long, typeData As Long
        Dim Name As String
        Dim HData As String
        Dim S As String
        Name = "ORACLE_HOME"
        ret = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\ORACLE\HOME0", hKey)
        If ret = 0 Then
            ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData) '注意ByVal千万?忘了
            If typeData = 1 Then
                S = String(lenData, Chr(0))
                RegQueryValueEx hKey, Name, 0, typeData, ByVal S, lenData '注意ByVal千万?忘了
                S = Left(S, InStr(S, Chr(0)) - 1)
            End If
        End If