精华内容
下载资源
问答
  • VB 注册表

    2011-11-15 18:48:32
    VB 注册表
  • vb注册表发生器,一个简单的vb注册表发生器源码
  • VB注册表添加删除

    2012-04-18 12:05:09
    有两个资源: 一、VB注册表添加删除 二、VB注册表值查看 默认路径可在代码中修改。
  • VB注册表扫描程序,可扫描清理注册表垃圾,扫描注册表中的关键字,发现注册表中的错误,并可删除多余的注册表错误信息,类似360注册表清理中的功能,在这里要说一下,因内部扫描范围的确定未知,程序仅供测试,慎重...
  • VB注册表读写.

    2012-09-26 10:22:59
    VB注册表读写. 个人工作总结 超详细,值得一看
  • VB 注册表实现隐藏功能 VB 注册表实现隐藏功能
  • VB注册表操作

    2008-01-08 22:47:15
    VB注册表操作 一个不错的东西
  • VB模块_VB注册表操作高级模块 里面有很完整的VB注册表操作, 只要添加这个模块,注册表操作就易如反掌.
  • 密码:liehuo.net VB实例源代码:设置文件和文件夹的显示方式,主要是对Windows注册表操作,因此是一个注册表操作实例,对于改变文件夹的显示方式,无非是显示...对VB注册表操作不熟悉的编程新手,应该需要这个小例子。
  • VB注册表模块,不是我写的,但非常好用,直接引用函数即可,有返回值
  • VB注册表掸子(扫描垃圾和错误信息) VB注册表掸子(扫描垃圾和错误信息)
  • VB注册表

    2013-08-21 10:50:05
    读取注册表操作类,为大家提供免费源代码。
  • VB注册表修复及优化工具(仿360安全卫士)
  • VB 注册表监视器

    2013-01-17 20:13:04
    注册表监视,用于监视注册表的源码,大家可以下载研究下。
  • VB 注册表操作源码

    2008-09-25 17:31:22
    集合所有注册表操作,方便初学者学习,VB源码
  • VB 注册表操作模块

    2009-08-26 10:38:32
    免费资源:该模块用来对注册表的查询、创建、修改和删除。适用所有节点。免费资源:该模块用来对注册表的查询、创建、修改和删除。适用所有节点。
  • VB注册表操作函数集

    2012-10-13 15:01:10
    历时几天,整理了一些注册表操作函数,并一个一个测试,应已经无误了,现上传共享一下。 个人声明:对因误用这些函数而导致数据丢失的,本人概不负责。对代码中的错误,欢迎大家指导批评。
  • vb 注册表启动

    2013-04-09 21:19:13
    dim get Set get = CreateObject("wscript.shell") get.regwrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName, App.Path & "\" & App.EXEName & ".exe" ...
  • VB 注册表操作

    千次阅读 2012-12-06 02:24:11
    '*****下面声明注册表操作中用到的API函数**************************** Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ...
    '*****下面先声明一些常量******************************************
    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_CONFIG = &H80000005
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_DYN_DATA = &H80000006
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_USERS = &H80000003
    Public Const REG_OPTION_NON_VOLATILE = 0
    Public Const KEY_ALL_ACCESS = (&H20000 Or &H1 Or &H2 Or &H4 Or &H8 Or &H10 Or &H20) And (Not &H100000)
    Public Const REG_SZ = 1
    Public Const REG_DWORD = 4
    '*****************************************************************
    '*****下面声明注册表操作中用到的API函数****************************
    Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal uloptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Public 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
    Public Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long
    Public Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long
    Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    '*****************************************************************
    '*****下面是我自己写的一些注册表操作中常用的一些函数**************
    '*****新键注册表项
    Public Function createnewkey(ip As Long, snewkeyname As String)
        Dim hnewkey As Long
        Dim retval As Long
        retval = RegCreateKey(ip, snewkeyname, hnewkey)
        If retval = 0 Then
                RegCloseKey (hnewkey) '关闭上面建立或打开的项
        End If
    End Function
    '实例:在HKEY_CURRENT_USER下建立项"xiaopeng"
    '代码为 createnewkey HKEY_CURRENT_USER ,"xiaopeng"
    '******************************************************************
    '*******删除注册表项***********************************************
    Public Function deletekey(ip As Long, skeyname As String)
        Dim hKey As Long
        Dim retval As Long
        retval = RegOpenKeyEx(ip, skeyname, 0, KEY_ALL_ACCESS, hKey)
        If retval = 0 Then
                RegDeleteKey ip, skeyname
        End If
    End Function
    '实例:删除上面建立的HKEY_CURRENT_USER下的项"xiaopeng"
    '代码为 deletekey HKEY_CURRENT_USER ,"xiaopeng"
    '******************************************************************
    '********新建,设置数值名称*****************************************
    Public Function setkeyvalue(ByVal ip As Long, ByVal keyname As String, ByVal valuename As String, ByVal valuesetting As Variant, ByVal valuetype As Long)
        Dim retval As Long
        Dim hKey As Long
        If RegOpenKeyEx(ip, keyname, 0, KEY_ALL_ACCESS, hKey) > 0 Then Exit Function
        Select Case valuetype
            Case REG_SZ
                 RegSetValueExString hKey, valuename, 0&, REG_SZ, valuesetting, Len(valuesetting)
            Case REG_DWORD
                 RegSetValueExLong hKey, valuename, 0, valuetype, valuesetting, 4
        End Select
        RegCloseKey (hKey)
    End Function
    '实例:在HKEY_CURRENT_USER下的项"xiaopeng"中建立名为"redice",键值为"is xiaopeng",类型为REG_SZ的新键
    '代码为 setkeyvalue HKEY_CURRENT_USER ,"xiaopeng" ,"redice","is xiaopeng",REG_SZ
    '又如:在HKEY_CURRENT_USER下的项"xiaopeng"中建立名为"ceshi",键值为2,类型为REG_DWORD的新键
    '代码为"setkeyvalue HKEY_CURRENT_USER,"xiaopeng","ceshi",2,REG_DWORD
    '******************************************************************
    '*********删除数值名称*********************************************
    Public Function deletevalue(ByVal ip As Long, ByVal keyname As String, ByVal valuename As String)
        Dim retval As Long
        Dim hKey As Long
        retval = RegOpenKeyEx(ip, keyname, 0, KEY_ALL_ACCESS, hKey)
        If retval > 0 Then
            Exit Function
        End If
        RegDeleteValue hKey, valuename
        RegCloseKey hKey
    End Function
    '实例:删除HKEY_CURRENT_USER下的项"xiaopeng"中名为"redice"的新键
    '代码为 deletevalue HKEY_CURRENT_USER ,"xiaopeng","redice"
    '******************************************************************
    '**********查询已存在的数值内容************************************
    Public Function getvalue(ByVal ip As Long, keyname As String, valuename As String) As String
        Dim retval As Long
        Dim hKey As Long
        Dim valuesetting As Variant
        Dim cddata As Long
        Dim lvalue As Long
        Dim svalue As String
        Dim lvaluetye As Long
        retval = RegOpenKeyEx(ip, keyname, 0, KEY_ALL_ACCESS, hKey)
        If retval > 0 Then
                getvalue = ""
                Exit Function
        End If
        retval = RegQueryValueEx(hKey, valuename, 0, lvaluetype, ByVal VBNullString, cddata)
        If retval <> 0 Then
                    RegCloseKey hKey
            Exit Function
        End If
        Select Case lvaluetype
            Case REG_SZ
                    svalue = String(cddata, Chr(0))
                    RegQueryValueEx hKey, valuename, 0, lvaluetype, ByVal svalue, cddata
                    valuesetting = Left$(svalue, cddata)
                    getvalue = CStr(valuesetting)
            Case REG_DWORD
                    RegQueryValueEx hKey, valuename, 0, lvaluetype, lvalue, cddata
                    valuesetting = lvalue
                    getvalue = CStr(valuesetting)
        End Select
    End Function
    '实例:获取HKEY_CURRENT_USER下的项"xiaopeng"中名为"redice"的新键的键值
    '代码为 getvalue HKEY_CURRENT_USER ,"xiaopeng","redice"
    '******************************************************
    展开全文
  • VB操作Windows注册表的一个小例子,在注册表中建立和删除键值,供初学者参考。
  • 压缩包内共有43个VB操作注册表的源码,极为实用 包括: 进入winxp前发出警告 禁止使用注册表编辑器 控制光驱的自动运行功能 历史文件 如何建立文件关联 删除上网历史记录 设置IE主页 制作试用软件 注册表读写例子 ...
  • VB注册表编程

    2007-03-24 16:08:00
    回想从02年为CPCW编写IntelSetXP注册表智能设置程序以来,至今已有五个年头,五来年从网上得到大家多少资料已说不清,今才把自己的资料整理发给大家,以供需要时使用。 下面代码可供大家尽情操作注册表。用于操作...

      回想从02年为CPCW编写IntelSetXP注册表智能设置程序以来,至今已有五个年头,五来年从网上得到大家多少资料已说不清,今才把自己的资料整理发给大家,以供需要时使用。
     下面代码可供大家尽情操作注册表。

    '用于操作注册表的API函数定义    -begin-
    Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    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
    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
    Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue 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 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
    '用于操作注册表的API函数定义    -end-
    '用于操作注册表的常数定义   -begin-
    '预定义的根结点
    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_CONFIG = &H80000005
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_DYN_DATA = &H80000006
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_PERFORMANCE_DATA = &H80000004
    Public Const HKEY_USERS = &H80000003
    '预定义的键值类型
    Public Const REG_NONE = 0
    Public Const REG_SZ = 1
    Public Const REG_EXPAND_SZ = 2
    Public Const REG_BINARY = 3
    Public Const REG_DWORD = 4
    Public Const REG_DWORD_LITTLE_ENDIAN = 4
    Public Const REG_DWORD_BIG_ENDIAN = 5
    Public Const REG_LINK = 6
    Public Const REG_MULTI_SZ = 7
    Public Const REG_RESOURCE_LIST = 8
    Public Const REG_FULL_RESOURCE_DESCRIPTOR = 9
    Public Const REG_RESOURCE_REQUIREMENTS_LIST = 10
    #If WinNT Then
    '打开注册文件的方式
    Public Const KEY_EVENT = &H1
    Public Const KEY_NOTIFY = &H10
    Public Const KEY_QUERY_VALUE = &H1
    Public Const KEY_SET_VALUE = &H2
    Public Const KEY_CREATE_SUB_KEY = &H4
    Public Const KEY_ENUMERATE_SUB_KEYS = &H8
    Public Const KEY_CREATE_LINK = &H20
    Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
    Public Const KEY_EXECUTE = (KEY_READ)
    Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
    Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
    #End If
    '注册文件错误描述
    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 ERROR_NOT_REGISTRY_FILE = 1017&
    Const ERROR_KEY_DELETED = 1018&
    Const ERROR_NO_LOG_SPACE = 1019&
    Const ERROR_KEY_HAS_CHILDREN = 1020&
    Const ERROR_CHILD_MUST_BE_VOLATILE = 1021&
    Const ERROR_RXACT_INVALID_STATE = 1369&
    ' 自定义注册文件错误
    Const REGAGENT_NOKEY = -1002
    Const REGAGENT_NOSUBKEY = -1003

    Public glStatus As Long

    '用于操作注册表的常数定义   -end-
    Function gfsGetKeyStringValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String) As String

    '功    能:从注册表中取得串值
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '          输出:    gfsGetKeyStringValue    String      取得的注册表串值
    '          影响:    glStatus                Long        状态值
        Dim llKeyID         As Long         '打开键的ID
        Dim llBufferSize    As Long         '需读取串的串值长度
        Dim lsKeyValue      As String       '存放读取的串值
       
        '预先置为空
        gfsGetKeyStringValue = Empty
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置(子键未设置则读默认值)
            glStatus = REGAGENT_NOKEY
            Exit Function
        End If
          
        '首先打开主键
        glStatus = RegOpenKey(plKey, psKey, llKeyID)
       
        If glStatus = ERROR_SUCCESS Then    '成功则取需读取字串的串值大小
            glStatus = RegQueryValueEx(llKeyID, psSubKey, 0&, REG_SZ, 0&, llBufferSize)
            If llBufferSize < 2 Then    '空值
                glStatus = RegCloseKey(llKeyID)
            Else    '有值,正式读取串值
                lsKeyValue = String(llBufferSize + 1, " ")
                glStatus = RegQueryValueEx(llKeyID, psSubKey, 0&, REG_SZ, ByVal lsKeyValue, llBufferSize)
                If glStatus = ERROR_SUCCESS Then
                    gfsGetKeyStringValue = Left$(lsKeyValue, llBufferSize - 1)
                End If
                glStatus = RegCloseKey(llKeyID)
            End If
        End If
    End Function
    Function gflGetKeyBinaryValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String) As Long

    '功    能:从注册表中取得二进制值
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '          输出:    gflGetKeyBinaryValue    Long        取得的注册表二进制值
    '          影响:    glStatus                Long        状态值
        Dim llKeyID         As Long         '打开键的ID
        Dim llKeyValue      As Long         '存放读取的二进制值
       
        '预先置为空
        gflGetKeyBinaryValue = Empty
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置(子键未设置则读默认值)
            glStatus = REGAGENT_NOKEY
            Exit Function
        End If
          
        '首先打开主键
        glStatus = RegOpenKey(plKey, psKey, llKeyID)
       
        If glStatus = ERROR_SUCCESS Then    '成功则取二进制值
            glStatus = RegQueryValueEx(llKeyID, psSubKey, 0&, REG_BINARY, llKeyValue, Len(llKeyValue))
            If glStatus = ERROR_SUCCESS Then
                gflGetKeyBinaryValue = llKeyValue
            End If
            glStatus = RegCloseKey(llKeyID)
        End If
    End Function
    Function gflGetKeyDwordValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String) As Long
    'ok
    '功    能:从注册表中取得双字值
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '          输出:    gflGetKeyDwordValue     Long        取得的注册表双字值
    '          影响:    glStatus                Long        状态值
        Dim llKeyID         As Long         '打开键的ID
        Dim llKeyValue      As Long         '存放读取的双字值
       
        '预先置为空
        gflGetKeyDwordValue = Empty
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置(子键未设置则读默认值)
            glStatus = REGAGENT_NOKEY
            Exit Function
        End If
          
        '首先打开主键
        glStatus = RegOpenKey(plKey, psKey, llKeyID)
       
        If glStatus = ERROR_SUCCESS Then    '成功则取双字值
            glStatus = RegQueryValueEx(llKeyID, psSubKey, 0&, REG_DWORD, llKeyValue, Len(llKeyValue))
            If glStatus = ERROR_SUCCESS Then
                gflGetKeyDwordValue = llKeyValue
            End If
            glStatus = RegCloseKey(llKeyID)
        End If
    End Function
    Sub gpvSetKeyStringValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String, ByVal psKeyValue As String)
    'ok
    '功    能:设置注册表中的串值
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '                   psKeyValue              String      要设置的串值
    '          输出:    无
    '          影响:    glStatus                Long        状态值
        Dim llKeyID         As Long         '打开键的ID
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置(子键未设置则读默认值)
            glStatus = REGAGENT_NOKEY
            Exit Sub
        End If
       
        '首先打开主键
        glStatus = RegOpenKey(plKey, psKey, llKeyID)
        If glStatus = ERROR_SUCCESS Then    '成功则设置值
            If Len(psKeyValue) = 0 Then     '设为空值
                glStatus = RegSetValueEx(llKeyID, psSubKey, 0&, REG_SZ, 0&, 0&)
            Else        '设为正常值
                glStatus = RegSetValueEx(llKeyID, psSubKey, 0&, REG_SZ, ByVal psKeyValue, Len(psKeyValue) + 1)
            End If
            glStatus = RegCloseKey(llKeyID)
        End If
       
    End Sub
    Sub gpvSetKeyDwordValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String, ByVal plKeyValue As Long)
    'ok
    '功    能:设置注册表中的双字值
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '                   plKeyValue              Long        要设置双字值
    '          输出:    无
    '          影响:    glStatus                Long        状态值
        Dim llKeyID         As Long         '打开键的ID
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置(子键未设置则读默认值)
            glStatus = REGAGENT_NOKEY
            Exit Sub
        End If
       
        '首先打开主键
        glStatus = RegOpenKey(plKey, psKey, llKeyID)
       
        If glStatus = ERROR_SUCCESS Then    '成功则设置值
            glStatus = RegSetValueEx(llKeyID, psSubKey, 0&, REG_DWORD, plKeyValue, Len(plKeyValue))
            glStatus = RegCloseKey(llKeyID)
        End If
       
    End Sub
    Sub gpvSetKeyBinaryValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String, ByVal plKeyValue As Long)
    'ok
    '功    能:设置注册表中的二进制值
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '                   plKeyValue              Long        要设置的二进制值
    '          输出:    无
    '          影响:    glStatus                Long        状态值
        Dim llKeyID         As Long         '打开键的ID
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置(子键未设置则读默认值)
            glStatus = REGAGENT_NOKEY
            Exit Sub
        End If
       
        '首先打开主键
        glStatus = RegOpenKey(plKey, psKey, llKeyID)
       
        If glStatus = ERROR_SUCCESS Then    '成功则设置值
            glStatus = RegSetValueEx(llKeyID, psSubKey, 0&, REG_BINARY, plKeyValue, Len(plKeyValue))
            glStatus = RegCloseKey(llKeyID)
        End If
       
    End Sub
    Function gflCreateKey(ByVal plKey As Long, ByVal psKey As String) As Long
    'ok
    '功    能:创建注册表中的主键
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '          输出:    gflCreateKey            Long        创建的主键ID
    '          影响:    glStatus                Long        状态值
        Dim llKeyID     As Long     '键ID
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置
            glStatus = REGAGENT_NOKEY
            Exit Function
        End If
           
        '创建主键
        glStatus = RegCreateKey(plKey, psKey, llKeyID)
        If glStatus = ERROR_SUCCESS Then
            gflCreateKey = llKeyID
        End If
       
    End Function
    Sub gpvDeleteKey(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String)
    'ok
    '功    能:删除注册表中的主键
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '          输出:    无
    '          影响:    glStatus                Long        状态值
        Dim llKeyID     As Long     '键ID
       
        glStatus = ERROR_SUCCESS        '假设成功

    如有需要,可QQ与我联系。398175615
        
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置
            glStatus = REGAGENT_NOKEY
            Exit Sub
        End If
           
        '利用创建主键判断是否存在主键
        glStatus = RegCreateKey(plKey, psKey, llKeyID)
        glStatus = RegDeleteKey(llKeyID, ByVal psSubKey)
           
    End Sub
    Sub gpvDeleteKeyValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String)
    'ok
    '功    能:删除注册表中的键值
    '参    数:
    '          输入:    plKey                   Long        根键名
    '                   psKey                   String      主键名
    '                   psSubKey                String      子键名
    '          输出:    无
    '          影响:    glStatus                Long        状态值

        Dim llKeyID     As Long     '键ID
       
        glStatus = ERROR_SUCCESS        '假设成功
       
        '确定参数有效
        If Len(psKey) = 0 Then      '主键未设置
            glStatus = REGAGENT_NOKEY
            Exit Sub
        End If
           
        '利用创建主键判断是否存在主键
        glStatus = RegCreateKey(plKey, psKey, llKeyID)
        glStatus = RegDeleteValue(llKeyID, ByVal psSubKey)
           
    End Sub

    'Function gfsGetKeyStringValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String) As String
    '功    能:从注册表中取得串值

    'Function gflGetKeyBinaryValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String) As Long
    '功    能:从注册表中取得二进制值

    'Function gflGetKeyDwordValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String) As Long
    '功    能:从注册表中取得双字值

    'Sub gpvSetKeyStringValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String, ByVal psKeyValue As String)
    '功    能:设置注册表中的串值

    'Sub gpvSetKeyDwordValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String, ByVal plKeyValue As Long)
    '功    能:设置注册表中的双字值

    'Sub gpvSetKeyBinaryValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String, ByVal plKeyValue As Long)
    '功    能:设置注册表中的二进制值

    'Function gflCreateKey(ByVal plKey As Long, ByVal psKey As String) As Long
    '功    能:创建注册表中的主键

    'Sub gpvDeleteKey(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String)
    '功    能:删除注册表中的主键

    'Sub gpvDeleteKeyValue(ByVal plKey As Long, ByVal psKey As String, ByVal psSubKey As String)
    '功    能:删除注册表中的键值

     

    展开全文
  • 详细的解释了,vb怎样去操作注册表和修改,里面附有源代码和注释,帮助初学者更好的掌握
  • VB注册表操作函数

    千次阅读 2008-10-10 22:33:00
    Option Explicit 注册表操作(SmRegCtr) /类型. Public Enum RegDataType /REG_NONE = 0 未知类型 REG_SZ = 1 Unicode字符串 /REG_EXP
    1. Option Explicit
    2. '
    3. '注册表操作(SmRegCtr)
    4. '
    5. '/类型.
    6. Public Enum RegDataType
    7.     '/REG_NONE = 0                     ' 未知类型
    8.     REG_SZ = 1                         ' Unicode字符串
    9.     '/REG_EXPAND_SZ = 2                ' Unicode字符串
    10.     REG_BINARY = 3                     ' 二进制
    11.     '/REG_DWORD = 4                    ' 双字节型.
    12.     '/REG_DWORD_LITTLE_ENDIAN = 4      ' 32-bit number (same as REG_DWORD)
    13.     '/REG_DWORD_BIG_ENDIAN = 5         ' 32-bit number
    14. End Enum
    15. Public Enum RegMainKey
    16.     HKEY_CLASSES_ROOT = 
    17.     HKEY_CURRENT_USER = 
    18.     HKEY_LOCAL_MACHINE = 
    19.     HKEY_USERS = 
    20.     HKEY_PERFORMANCE_DATA = 
    21.     HKEY_CURRENT_CONFIG = 
    22.     HKEY_DYN_DATA = 
    23. End Enum
    24. '
    25. Const READ_CONTROL = 
    26. Const STANDARD_RIGHTS_READ = (READ_CONTROL)
    27. Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
    28. Const KEY_QUERY_VALUE = 
    29. Const KEY_SET_VALUE = 
    30. Const KEY_CREATE_SUB_KEY = 
    31. Const KEY_ENUMERATE_SUB_KEYS = 
    32. Const KEY_NOTIFY = 
    33. Const KEY_CREATE_LINK = 
    34. Const SYNCHRONIZE = 
    35. Const STANDARD_RIGHTS_ALL = 
    36. '----------------------------------------------------------------
    37. Const KEY_READ = ((STANDARD_RIGHTS_READ Or _
    38.    KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) _
    39.    And (Not SYNCHRONIZE))
    40. Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or _
    41.    KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
    42. Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or _
    43.    KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY _
    44.    Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) _
    45.    And (Not SYNCHRONIZE))
    46. Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
    47. Const ERROR_SUCCESS = 0
    48. '-----------------------------------------------------------------
    49. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As LongAs Long
    50. Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As LongByVal lpSubKey As StringAs Long
    51. Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As LongByVal lpSubKey As String, phkResult As LongAs Long
    52. Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As LongByVal lpValueName As StringAs Long
    53. Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As LongByVal lpSubKey As String, phkResult As LongAs Long
    54. Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As LongByVal lpValueName As StringByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As LongAs Long
    55. Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As LongByVal lpValueName As StringByVal Reserved As LongByVal dwType As Long, lpData As Any, ByVal cbData As LongAs Long
    56. Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As LongByVal dwIndex As LongByVal lpName As String, lpcbName As LongByVal lpReserved As LongByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
    57. Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As LongByVal dwIndex As LongByVal lpValueName As String, lpcbValueName As LongByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As LongAs Long
    58. '
    59. '功能:取某键值下的所有项
    60. '函数:RegEnumKeyVal
    61. '参数:hKey RegMainKey枚举,subKey 子键路径名称.
    62. '返回值:String 字符串数组
    63. '例子:
    64. Public Function RegEnumKeyVal(hKey As RegMainKey, subKey As StringAs String()
    65.     Dim mhKey As Long, Cnt As Long, sSave As String
    66.     Dim RevVal() As String
    67.     
    68.     On Error Resume Next
    69.     
    70.     RegOpenKey hKey, "Enum", mhKey
    71.     Do
    72.         sSave = String(255, 0)
    73.         If RegEnumKeyEx(mhKey, Cnt, sSave, 255, 0, vbNullString, ByVal 0&, ByVal 0&) <> 0 Then Exit Do
    74.         Cnt = Cnt + 1
    75.     Loop
    76.     RegCloseKey mhKey
    77.     RegOpenKey hKey, subKey, mhKey
    78.     Cnt = 0
    79.     Do
    80.         sSave = String(255, 0)
    81.         If RegEnumValue(mhKey, Cnt, sSave, 255, 0, ByVal 0&, ByVal 0&, ByVal 0&) <> 0 Then Exit Do
    82.         Cnt = Cnt + 1
    83.         ReDim Preserve RevVal(Cnt - 1)
    84.         RevVal(Cnt - 1) = StripTerminator(sSave)
    85.     Loop
    86.     RegCloseKey hKey
    87.     RegEnumKeyVal = RevVal
    88. End Function
    89.     
    90. '
    91. '功能:建立子键.
    92. '函数:RegCreatesubKey
    93. '参数:hKey RegMainKey枚举,subKey 子键名称.
    94. '返回值:0 成功,其它值 失败.
    95. '例子:
    96. Public Function RegCreatesubKey(hKey As RegMainKey, subKey As StringAs Variant
    97.        Dim Ret As Variant
    98.        If Left$(subKey, 1) = "/" Then subKey = Right$(subKey, Len(subKey) - 1)
    99.        If Right$(subKey, 1) = "/" Then subKey = Left$(subKey, Len(subKey) - 1)
    100.        RegCreateKey hKey, subKey, Ret
    101.        RegCreatesubKey = Ret
    102. End Function
    103. '
    104. '功能:删除子键.
    105. '函数:RegDeletesubKey
    106. '参数:hKey RegMainKey枚举,subKey 子键名称.
    107. '返回值:无
    108. '例子:
    109. Public Function RegDeletesubKey(hKey As RegMainKey, subKey As String)
    110.        If Left$(subKey, 1) = "/" Then subKey = Right$(subKey, Len(subKey) - 1)
    111.        If Right$(subKey, 1) = "/" Then subKey = Left$(subKey, Len(subKey) - 1)
    112.        RegDeleteKey hKey, subKey
    113. End Function
    114. '
    115. '功能:保存值到注册表.
    116. '函数:RegSaveData
    117. '参数:hKey RegMainKey枚举,subKey 子键名称.ValName 值名称,KeyVal 值,ValType RegDataType枚举.
    118. '返回值:0 成功,其它值 失败.
    119. '例子:
    120. Public Function RegSaveData(hKey As RegMainKey, subKey As String, ValName As String, KeyVal As StringOptional ValType As RegDataType = REG_SZ) As Long
    121.     Dim Ret As Long
    122.     On Error Resume Next
    123.     Ret = 0
    124.     If Left$(subKey, 1) = "/" Then subKey = Right$(subKey, Len(subKey) - 1)
    125.     If Right$(subKey, 1) = "/" Then subKey = Left$(subKey, Len(subKey) - 1)
    126.     If ValType = RegDataType.REG_BINARY Then
    127.        Ret = SaveStringLong(hKey, subKey, ValName, KeyVal)
    128.     Else
    129.        Ret = SaveString(hKey, subKey, ValName, KeyVal)
    130.     End If
    131.     RegSaveData = Ret
    132. End Function
    133. '
    134. '功能:取注册表中的值.
    135. '函数:RegGetVal
    136. '参数:hKey RegMainKey枚举,subKey 子键名称.ValName 值名称
    137. '返回值:成功,返回注册表中的值,失败 NULL
    138. '例子:
    139. Public Function RegGetVal(hKey As RegMainKey, subKey As String, ValName As StringAs Variant
    140.     Dim Ret As Variant
    141.     If Left$(subKey, 1) = "/" Then subKey = Right$(subKey, Len(subKey) - 1)
    142.     If Right$(subKey, 1) = "/" Then subKey = Left$(subKey, Len(subKey) - 1)
    143.     Ret = GetString(hKey, subKey, ValName)
    144.     RegGetVal = Ret
    145. End Function
    146. '
    147. '功能:删除注册表中的值.
    148. '函数:RegDelVal
    149. '参数:hKey RegMainKey枚举,subKey 子键名称.ValName 值名称
    150. '返回值:成功,返回注册表中的值,失败 NULL
    151. '例子:
    152. Public Function RegDelVal(hKey As RegMainKey, subKey As String, ValName As String)
    153.        DelSetting hKey, subKey, ValName
    154. End Function
    155. '/===================================================================================
    156. '/以下函数为功能函数.
    157. '/取注册表中的值.
    158. Function GetString(hKey As RegMainKey, subKey As String, ValName As StringAs Variant
    159.     On Error Resume Next
    160.     Dim Ret As Variant
    161.     RegOpenKey hKey, subKey, Ret
    162.     GetString = RegQueryStringValue(Ret, ValName)
    163.     RegCloseKey Ret
    164. End Function
    165. '/保存字符串.
    166. Function SaveString(hKey As RegMainKey, subKey As String, ValName As String, strData As String)
    167.     Dim Ret As Variant
    168.     Dim ReturnVal As Long
    169.     On Error Resume Next
    170.     RegCreateKey hKey, subKey, Ret
    171.     ReturnVal = RegSetValueEx(Ret, ValName, 0, RegDataType.REG_SZ, ByVal strData, Len(strData))
    172.     RegCloseKey Ret
    173. End Function
    174. '/保存值二进制值.
    175. Function SaveStringLong(hKey As RegMainKey, subKey As String, ValName As String, strData As StringAs Variant
    176.     Dim Ret As Variant
    177.     On Error Resume Next
    178.     RegCreateKey hKey, subKey, Ret
    179.     RegSetValueEx Ret, ValName, 0, RegDataType.REG_BINARY, CByte(strData), 1
    180.     RegCloseKey Ret
    181. End Function
    182. '/删除值
    183. Function DelSetting(hKey As RegMainKey, subKey As String, ValName As String)
    184.     Dim Ret As Variant
    185.     On Error Resume Next
    186.     RegCreateKey hKey, subKey, Ret
    187.     RegDeleteValue Ret, ValName
    188.     RegCloseKey Ret
    189. End Function
    190. Function RegQueryStringValue(ByVal hKey As RegMainKey, ByVal ValName As StringAs String
    191.     Dim lResult As Long
    192.     Dim lValueType As Long
    193.     Dim strBuf As String
    194.     Dim lDataBufSize As Long
    195.     Dim strData As Long
    196.     Dim RetVal As String
    197.     
    198.     On Error Resume Next
    199.     
    200.     lResult = RegQueryValueEx(hKey, ValName, 0, lValueType, ByVal 0, lDataBufSize)
    201.     If lResult = 0 Then
    202.         If lValueType = RegDataType.REG_SZ Then
    203.             strBuf = String(lDataBufSize, Chr$(0))
    204.             lResult = RegQueryValueEx(hKey, ValName, 0, 0, ByVal strBuf, lDataBufSize)
    205.             If lResult = 0 Then
    206.                RetVal = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
    207.             End If
    208.         ElseIf lValueType = RegDataType.REG_BINARY Then
    209.             lResult = RegQueryValueEx(hKey, ValName, 0, 0, strData, lDataBufSize)
    210.             If lResult = 0 Then
    211.                RetVal = strData
    212.             End If
    213.         End If
    214.     End If
    215.     RegQueryStringValue = RetVal
    216. End Function
    217. Private Function StripTerminator(sInput As StringAs String
    218.     Dim ZeroPos As Integer
    219.     ZeroPos = InStr(1, sInput, vbNullChar)
    220.     If ZeroPos > 0 Then
    221.         StripTerminator = Left$(sInput, ZeroPos - 1)
    222.     Else
    223.         StripTerminator = sInput
    224.     End If
    225. End Function
     
    展开全文
  • VB 注册表操作模块 代码

    千次阅读 2008-03-29 13:23:00
    Attribute VB_Name = "Reg_Operation"这是一个操作注册表的Bas文件,其中包含可以建立新键值,删除键值,查询键值的函数.Powered by barenxOption ExplicitOption Base 0Public Declare Function RegCloseKey...
    Attribute VB_Name = "Reg_Operation"
    '这是一个操作注册表的Bas文件,其中包含可以建立新键值,删除键值,查询键值的函数.Powered by barenx
    Option Explicit
    Option Base 0
    Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As LongAs Long
    Public Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As StringByVal hkey As Long, phkResult As LongAs Long
    Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hkey As LongByVal lpSubKey As String, phkResult As LongAs Long
    Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hkey As LongByVal lpSubKey As StringByVal Reserved As LongByVal lpClass As StringByVal dwOptions As LongByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As LongAs Long
    Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hkey As LongByVal lpSubKey As StringAs Long
    Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hkey As LongByVal lpValueName As StringAs Long
    Public Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hkey As LongByVal dwIndex As LongByVal lpName As StringByVal cbName As LongAs Long
    Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hkey As LongByVal dwIndex As LongByVal lpName As String, lpcbName As LongByVal lpReserved As LongByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
    Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hkey As LongByVal dwIndex As LongByVal lpValueName As String, lpcbValueName As LongByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As LongAs Long
    Public Declare Function RegFlushKey Lib "advapi32.dll" (ByVal hkey As LongAs Long
    Public Declare Function RegGetKeySecurity Lib "advapi32.dll" (ByVal hkey As LongByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR, lpcbSecurityDescriptor As LongAs Long
    Public Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hkey As LongByVal lpSubKey As StringByVal lpFile As StringAs Long
    Public Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" (ByVal hkey As LongByVal bWatchSubtree As LongByVal dwNotifyFilter As LongByVal hEvent As LongByVal fAsynchronus As LongAs Long
    Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hkey As LongByVal lpSubKey As String, phkResult As LongAs Long
    Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hkey As LongByVal lpSubKey As StringByVal ulOptions As LongByVal samDesired As Long, phkResult As LongAs Long
    Public Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hkey As LongByVal lpClass As String, lpcbClass As LongByVal lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
    Public Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hkey As LongByVal lpSubKey As StringByVal lpValue As String, lpcbValue As LongAs Long
    Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As LongByVal lpValueName As StringByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As LongAs Long
    Public Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hkey As LongByVal lpSubKey As StringByVal lpNewFile As StringByVal lpOldFile As StringAs Long
    Public Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hkey As LongByVal lpFile As StringByVal dwFlags As LongAs Long
    Public Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hkey As LongByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
    Public Declare Function RegSetKeySecurity Lib "advapi32.dll" (ByVal hkey As LongByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR) As Long
    Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hkey As LongByVal lpSubKey As StringByVal dwType As LongByVal lpData As StringByVal cbData As LongAs Long
    Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As LongByVal lpValueName As StringByVal Reserved As LongByVal dwType As Long, lpData As Any, ByVal cbData As LongAs Long
    Public Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hkey As LongByVal lpSubKey As StringAs Long
    Public Type FILETIME
            dwLowDateTime 
    As Long
            dwHighDateTime 
    As Long
    End Type

    Public Type SECURITY_ATTRIBUTES
            nLength 
    As Long
            bInheritHandle 
    As Long
            lpSecurityDescriptor 
    As Long
    End Type

    Public Type ACL
            AclRevision 
    As Byte
            AceCount 
    As Integer
            Sbz2 
    As Integer
            AclSize 
    As Integer
            Sbz1 
    As Byte
    End Type

    Public Type SECURITY_DESCRIPTOR
            Revision 
    As Byte
            Sacl 
    As ACL
            Dacl 
    As ACL
            Owner 
    As Long
            Group 
    As Long
            Control 
    As Long
            Sbz1 
    As Byte
    End Type
    Public Const REG_BINARY = 3
    Public Const REG_CREATED_NEW_KEY = &H1
    Public Const REG_DWORD_BIG_ENDIAN = 5
    Public Const REG_DWORD_LITTLE_ENDIAN = 4
    Public Const REG_EXPAND_SZ = 2
    Public Const REG_FORCE_RESTORE = (&H8)
    Public Const REG_FULL_RESOURCE_DESCRIPTOR = 9
    Public Const REG_KEY_INSTDEV = ("Installed")
    Public Const REG_LINK = 6
    Public Const REG_NONE = 0
    Public Const REG_MULTI_SZ = 7
    Public Const REG_NOTIFY_CHANGE_ATTRIBUTES = &H2
    Public Const REG_NOTIFY_CHANGE_LAST_SET = &H4
    Public Const REG_NOTIFY_CHANGE_NAME = &H1
    Public Const REG_NOTIFY_CHANGE_SECURITY = &H8
    Public Const REG_NO_LAZY_FLUSH = &H4
    Public Const REG_OPENED_EXISTING_KEY = &H2
    Public Const REG_OPTION_BACKUP_RESTORE = 4
    Public Const REG_OPTION_CREATE_LINK = 2
    Public Const REG_OPTION_NON_VOLATILE = 0
    Public Const REG_OPTION_OPEN_LINK = &H8
    Public Const REG_OPTION_RESERVED = 0
    Public Const REG_OPTION_VOLATILE = 1
    Public Const REG_QWORD = 11
    Public Const REG_QWORD_LITTLE_ENDIAN = 11
    Public Const REG_REFRESH_HIVE = &H2
    Public Const REG_RESOURCE_LIST = 8
    Public Const REG_RESOURCE_REQUIREMENTS_LIST = 10
    Public Const REG_RESTORE_LOG_KEY = "RegRestoreLogFile"
    Public Const MORE_ROWS = -1
    Public Const REG_ROW = MORE_ROWS
    Public Const REG_SAVE_LOG_KEY = "RegSaveLogFile"
    Public Const REG_SZ = 1
    Public Const REG_WHOLE_HIVE_VOLATILE = &H1
    Public Const REG_LEGAL_OPTION = (REG_OPTION_RESERVED Or REG_OPTION_NON_VOLATILE Or REG_OPTION_VOLATILE Or REG_OPTION_CREATE_LINK Or REG_OPTION_BACKUP_RESTORE)
    Public Const REG_LEGAL_CHANGE_FILTER = (REG_NOTIFY_CHANGE_NAME Or REG_NOTIFY_CHANGE_ATTRIBUTES Or REG_NOTIFY_CHANGE_LAST_SET Or REG_NOTIFY_CHANGE_SECURITY)

    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_CONFIG = &H80000005
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_DYN_DATA = &H80000006
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_PERFORMANCE_DATA = &H80000004
    Public Const HKEY_USERS = &H80000003

    Public Const ERROR_SUCCESS = 0&
    Public Const ERROR_NONE = 0
    Public Const ERROR_BADDB = 1
    Public Const ERROR_BADKEY = 2
    Public Const ERROR_CANTOPEN = 3
    Public Const ERROR_CANTREAD = 4
    Public Const ERROR_CANTWRITE = 5
    Public Const ERROR_OUTOFMEMORY = 6
    Public Const ERROR_INVALID_PARAMETER = 7
    Public Const ERROR_ACCESS_DENIED = 8
    Public Const ERROR_INVALID_PARAMETERS = 87
    Public Const ERROR_NO_MORE_ITEMS = 259&

    Public Const BUFFER_SIZE As Long = 255

    Public Const READ_CONTROL = &H20000
    Public Const SYNCHRONIZE = &H100000

    Public Const STANDARD_RIGHTS_ALL = &H1F0000
    Public Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
    Public Const STANDARD_RIGHTS_READ = (READ_CONTROL)
    Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
    Public Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)

    Public Const KEY_CREATE_LINK = &H20
    Public Const KEY_CREATE_SUB_KEY = &H4
    Public Const KEY_ENUMERATE_SUB_KEYS = &H8
    Public Const KEY_EVENT = &H1
    Public Const KEY_LENGTH_MASK = &HFFFF0000
    Public Const KEY_NOTIFY = &H10
    Public Const KEY_QUERY_VALUE = &H1
    Public Const KEY_SET_VALUE = &H2
    Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
    Public Const KEY_EXECUTE = (KEY_READ)
    Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
    Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))

    '*************************************************************************************

    Public Function RegDelAllSubVal(ByVal hKeyR As LongByVal mKey As StringOptional ByVal Flush As Boolean = FalseAs Boolean
      
    On Error Resume Next
      
    Dim hkey As Long, Cnt As Long
      
    Dim sName As String, Ret As Long: sName = Space(BUFFER_SIZE)
      
    Dim sData(BUFFER_SIZE) As Byte, RetData As Long
      
    Dim NameSpace() As StringReDim NameSpace(1)
      
      
    If RegOpenKeyEx(ByVal hKeyR, ByVal mKey, ByVal 0&, KEY_ALL_ACCESS, hkey) = ERROR_SUCCESS Then
        Cnt 
    = 0: Ret = BUFFER_SIZE: RetData = BUFFER_SIZE
        
    If RegEnumValue(hkey, Cnt, sName, Ret, ByVal 0&ByVal 0&, sData(0), RetData) <> ERROR_NO_MORE_ITEMS Then
          
    Do
            
    ReDim Preserve NameSpace(Cnt)
            
    NameSpace(Cnt) = Left$(sName, Ret)
            Cnt 
    = Cnt + 1: Ret = BUFFER_SIZE: RetData = BUFFER_SIZE
          
    Loop While RegEnumValue(hkey, Cnt, sName, Ret, ByVal 0&ByVal 0&, sData(0), RetData) <> ERROR_NO_MORE_ITEMS
        
          
    For Cnt = 0 To UBound(NameSpace)
            
    Call RegDeleteValue(ByVal hkey, NameSpace(Cnt))
          
    Next Cnt
        
    End If
        Cnt 
    = 0:  Ret = BUFFER_SIZE:  RetData = BUFFER_SIZE
        RegDelAllSubVal 
    = (RegEnumValue(hkey, Cnt, sName, Ret, ByVal 0&ByVal 0&, sData(0), RetData) = ERROR_NO_MORE_ITEMS)
        
    If Flush Then RegFlushKey hkey
        RegCloseKey hkey
      
    Else
        RegDelAllSubVal 
    = False
      
    End If
    End Function


    Public Function RegDelAllSubKey(ByVal hKeyRoot As LongByVal mKey1 As StringOptional ByVal Flush As Boolean = FalseAs Boolean ', mKey2 As String
      On Error Resume Next
      
    Dim hkey As Long, Ret As Long, Cnt As Long
      
    Dim i As Long, t As FILETIME
      
    Dim sName As String: sName = Space(BUFFER_SIZE)
      
    Dim NameSpace() As StringReDim NameSpace(1)
      
    Call RegDelAllSubVal(ByVal hKeyRoot, ByVal mKey1, False)
      
    If RegOpenKeyEx(ByVal hKeyRoot, ByVal mKey1, ByVal 0&, KEY_ALL_ACCESS, hkey) = ERROR_SUCCESS Then
        RegDelAllSubKey 
    = True: Cnt = 0: Ret = BUFFER_SIZE
        
    If RegEnumKeyEx(hkey, Cnt, sName, Ret, ByVal 0&, vbNullString, i, t) <> ERROR_NO_MORE_ITEMS Then
          
    Do
            
    ReDim Preserve NameSpace(Cnt)
            
    NameSpace(Cnt) = Left$(sName, Ret)
            Cnt 
    = Cnt + 1: Ret = BUFFER_SIZE
          
    Loop While RegEnumKeyEx(hkey, Cnt, sName, Ret, ByVal 0&, vbNullString, i, t) <> ERROR_NO_MORE_ITEMS
          
          
    For Cnt = LBound(NameSpaceTo UBound(NameSpace)
            
    Call RegDelAllSubKey(ByVal hKeyRoot, ByVal mKey1 & "" & NameSpace(Cnt))
          
    Next Cnt
        
    End If
        RegDelAllSubKey 
    = (RegDeleteKey(ByVal hKeyRoot, ByVal mKey1) = ERROR_SUCCESS)
        
    If Flush Then RegFlushKey hkey
        RegCloseKey hkey
      
    Else
        RegDelAllSubKey 
    = False
      
    End If
    End Function


    Public Function RegDelSingleValue(ByVal mKeyRoot As LongByVal sKeyName As StringByVal sValueName As StringAs Long
      
    On Error Resume Next
      
    Dim hkey As Long
      
    If RegOpenKeyEx(mKeyRoot, ByVal sKeyName, ByVal 0&, KEY_ALL_ACCESS, hkey) = ERROR_SUCCESS Then
        RegDelSingleValue 
    = RegDeleteValue(hkey, ByVal sValueName)
        
    Call RegCloseKey(hkey)
      
    Else
        RegDelSingleValue 
    = ERROR_CANTOPEN
      
    End If
    End Function


    Public Function RegSetSingleValue(ByVal mKeyRoot As LongByVal sKeyName As StringByVal sValueName As StringByVal sValueType As LongByVal sValue As StringAs Long
      
    On Error Resume Next
      
    Dim hkey As Long
      
    If RegCreateKey(mKeyRoot, sKeyName, hkey) = ERROR_SUCCESS Then
        RegSetSingleValue 
    = RegSetValueEx(hkey, ByVal sValueName, ByVal 0&ByVal sValueType, ByVal sValue, ByVal Len(sValue))
        
    Call RegCloseKey(hkey)
      
    Else
        RegSetSingleValue 
    = ERROR_CANTOPEN
      
    End If
    End Function

     
    展开全文
  • VB注册表操作的问题.

    2012-03-11 14:36:57
    VB6.0中,怎么能读取某一项下的默认键值? 比如我有一注册表文件: Windows Registry Editor Version 5.00 ...[HKEY_CLASSES_ROOT\exefile\shell\eXeScope] ...哪位大侠有好点的VB操作注册表的示例啊?
  • 一个好用的 VB 注册表操作类模块

    千次阅读 2005-09-25 20:06:00
    '//注册表 API 函数声明 Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _  (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _  ByVal samDesired ...
  • 2 再做一个注册表写入代码,在注册表中写一个检测代码,防止被移动动其它电脑上去.(这个模块更要封装起来,防止被他们更改) 上述两功能如何实现??高手能否能个代码来参考...谢谢!!! (毕竟我们写代码的人是辛苦的,总...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 946
精华内容 378
关键字:

vb注册表