请问一下乍样用API对注册表进行操作,如果打开、创建主键、如果保存键值,以能查询某键的值!!!我先在这里谢谢你们了!!!

解决方案 »

  1.   

    private const HKEY_CLASSES_ROOT = &H80000000  '主键 
    private const HKEY_CURRENT_USER = &H80000001  '主键 
    private const STANDARD_RIGHTS_ALL = &H1F0000 
    private const KEY_ENUMERATE_SUB_KEYS = & H8 
    private const KEY_SET_VALUE = & H2 
    private const KEY_CREATE_SUB_KEY =&H4 
    private const KEY_QUERY_VALUE =&H1 
    private const KEY_NOTIFY =&H10 
    private const KEY_CREATE_LINK =&H20 
    private const SYNCHRONIZE =&H100000 
    private constKEY_ALL_ACCSSS = ((STANDARD_RIGHTS_ALL or KEY_QUERY_VALLUE or KEY_CREATE_SUB_KEY or KEY_DNUMREATE_SUB_KEYS or KEY_NOTIFY_VALUE or KEY_CREATE_LINK) And (Not SYNCHRONIZE)) 
    private const REG_MULTI_SZ =7 
    private const ERROR_SUCCESS =0& 
    private const READ_CONTROL= &H20000 
    private const REG_DWORD=4 
    private const REG_EXPAND_SZ =2 
    private const REG_BINARY =3 
    private const REG_DWORD_BIG_ENDIAD=5 
    private const REG_DWORD_LITTLE_ENDIAN=4 
    private const REG_NONE = 0
     Private Declare Function regopenkeyex Lib "advapi32.dll" Alias "regopendkeyexa" (ByVal hkey As Long, ByVal lpsubkey As String, ByVal uloptions As Long, ByVal samdesired As Long, phkresult 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 regsetvalueEx Lib "advapi.dll" Alias "regsetvalueExA" (ByVal hkey As Long, ByVal lpvaluename As String, ByVal reserved As Long, ByVal dwtype As Long, lpdate As Any, ByVal cbdate 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, lpdate As Any, lpcbdate As Long) As Long 
      Private Declare Function regclosekey Lib "advapi32.dll" (ByVal hkey As Long) As Long
    以下的放在窗体load事件中 
    Private Sub Form_Load() 
    Dim hkey As Long '主键的句柄 
    Dim lpdate As String '查询得到的键值 
    Dim sizeofdate As Long '键值的长度 
    Dim valuetype As Long 
    sizeofdate = 150 
    Dim return_openkey As Long '函数调用的返回值 
    Dim prikey As String '主健 
    Dim keyvaluel, keyvalue2 As String '键值的名称 
    prikey = "网动设计工作室 dali\dali168" '主键 
    keyvalue1 = "无心泪" '键值名称 
    keyvalue2 = "设计动感生活" '键值名称 
    '下面的函数RegOpenKeyEx取得一个句柄hKey 
    return_openkey = regopenkeyex(hkey + CURRENT_USER, "", 0, KEY_ALL_ACCESS, hkey) 
    '下面的函数RgeCreateKey 建立一个主键,如此键已存在,则打开它 
    If regcreatekey(hkey, prikey, hkey) <> ERROR_SUCCESS Then 
    MsgBox "create" & prikey & "failed" 
    Exit Sub 
    End If 
    Dim keydate As String '健值 
    keydate = "500" 
    '下面的函数RegsetValueEx给指定的键什名称赋键值 
    If regsetvalueEx(hkey, keyvaluel, 0&, REG_SZ, ByVal keydate, Len(keydate) + 1) <> ERROR_SUCCESS Then 
    MsgBox "setvalue" & keyvaluel & "failed" 
    Exit Sub 
    End If 
    ekydate = "15020" 
    '下面的函数RegSetvalueEx给指定的键值名称“设计动感生活”赋键值为"15020" 
    If regsetvalueEx(hkey, keyvalue2, 0&, REG_SZ, ByVal keydate, Len(keydate) + 1) <> ERROR_SUCCESS Then 
    MsgBox "setvalue" & keyvalue2 & "failed" 
    Exit Sub 
    End If 
    return_openkey = regqueryvalueEx(hkey, keyuvalel, 0&, REG_SZ, 0&, sizeofdate) 
    ipdate = String(sizeofdate + 1, "") 
    '下面的函数RegQueryValueEx检索指定键值名的的键值和键值类型 
    If regqueryvalueEx(hkey, keyvaluel, 0&, REG_SZ, ByVal lpdate, sizeofdate) <> ERROR_SUCCESS Then 
    MsgBox "query" & keyvaluel & "failed" 
    End If 
    regclosekey (hkey) 
    End Sub 
    我想应该是这样写吧!
      

  2.   

    http://community.csdn.net/Expert/topic/2916/2916614.xml?temp=.3101923
      

  3.   

    操作注册表的完整模块:http://csdngoodname008.51.net/mRegistry.zip
      

  4.   

    同意楼上另,我觉得用WSH(Windows Script Host)最容易掌握Set Reg = CreateObject("Wscript.Shell")Reg.RegWrite "要写入的值的名称","值"
    Reg.RegRead "要读取的值的名称"
    Reg.RegDelete "要删除的键名或值名"例:修改IE主页Dim Reg As Object
    Set Reg = CreateObject("Wscript.Shell")
    Reg.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\start page", "www.csdn.net"
    注意:WSH认为,结尾带有“\”的是一个键的名称,否则是值的名称
      

  5.   

    用WSH搞,对系统安全性较高 或者安装的杀毒软件“过敏”不太好用~
      

  6.   

    主要就是以下几个API函数了
    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         ' Note that if you declare the lpData parameter as String, you must pass it By Value. 
    Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
    Private Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    等等了
      

  7.   

    大家不好意思了,小第刚刚来这个社区,不知道乍样结贴,我以为每一个人都可以给100分的,就一个不小心就给了dali168这个用户100分了,在这里我就先说个对不起。不知道该乍样恢复呢!想请版主帮帮忙,帮我重新给分的机会!