打印本文 打印本文 关闭窗口 关闭窗口
在VB中怎样操作注册表.
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2491  更新时间:2009/4/23 18:57:39  文章录入:mintao  责任编辑:mintao

在VB中系统提供了对注册表操作的两个函数.但它们只可以操作特定的键.使用起来往往不能满足需要.下面的这个函数可以实现对注册表的所有操作.并且具有标准VB函数的通用性和易用性.请指点..

Public Function SysRegControl(Optional ByVal RootKey As RegRootKey = regHKEY_LOCAL_MACHINE, Optional ByVal SubKey As String = "", Optional ByVal Key As String = "QiLin", Optional ByRef KeyValue As Variant = "", Optional regKeyType As regKeyTypes = regTypeString, Optional ByVal id As RegControlID = regSetKeyValue) As Boolean
Attribute SysRegControl.VB_Description = "''''setregkey 函数\r\n''''功能:\r\n''''   对注册表中指定键键进行操作\r\n''''参数:\r\n''''   RootKey     根键\r\n''''RootKey 说明\r\n''''{       regHKEY_CLASSES_ROOT       = &H80000000\r\n''''        regHKEY_CURRENT_USER       = &H80000001\r\n''''        regHKEY_LOCAL_MACHINE      = &H80000002\r\n''''        regHKEY_USERS          = &H80000003\r\n''''        regHKEY_PERFORMANCE_DATA   = &H80000004\r\n''''        regHKEY_CURRENT_CONFIG     = &H80000005\r\n''''        regHKEY_DYN_DATA       = &H80000006\r\n''''}\r\n''''   SubKey      子键路径\r\n''''   Key     设置的键名\r\n''''   KeyValue    设置的键值\r\n''''   regKeyType  指定键值的类型\r\n''''regKeyType说明:\r\n''''{\r\n''''        regTypeBinary          =&H00000001     ''''Binary\r\n''''        regTypeDword           =&H00000002 ''''DWORD\r\n''''        regTypeString          =&H00000003 ''''String\r\n''''}\r\n''''   ID      函数操作功能号\r\n''''功能ID说明:\r\n''''{       regSetKeyValue         =111    ''''设置键值\r\n''''        regGetKeyValue         =112    ''''取键值\r\n''''        regCreatKey            =113"
''''***************************************************************************************
''''setregkey 函数
''''功能:
''''   对注册表中指定键键进行操作
''''参数:
''''   RootKey     根键
''''RootKey 说明
''''{       regHKEY_CLASSES_ROOT       = &H80000000
''''        regHKEY_CURRENT_USER       = &H80000001
''''        regHKEY_LOCAL_MACHINE      = &H80000002
''''        regHKEY_USERS          = &H80000003
''''        regHKEY_PERFORMANCE_DATA   = &H80000004
''''        regHKEY_CURRENT_CONFIG     = &H80000005
''''        regHKEY_DYN_DATA       = &H80000006
''''}
''''   SubKey      子键路径
''''   Key     设置的键名
''''   KeyValue    设置的键值
''''   regKeyType  指定键值的类型
''''regKeyType说明:
''''{
''''        regTypeBinary          =&H00000001     ''''Binary
''''        regTypeDword           =&H00000002 ''''DWORD
''''        regTypeString          =&H00000003 ''''String
''''}
''''   ID      函数操作功能号
''''功能ID说明:
''''{       regSetKeyValue         =111    ''''设置键值
''''        regGetKeyValue         =112    ''''取键值
''''        regCreatKey            =113    ''''创建子键
''''        regDeleteKeys          =114    ''''删除末级子键
''''        regDelAllKey           =115    ''''删除非末级子键
''''        regDeleteValues        =116    ''''删除键值
''''        regOther           =120    ''''保留操作ID
''''}
''''返回值:
''''   TRUE        操作成功
''''   FALSE       操作失败
''''   (C)2001.3.2
''''*****************************************************************************************
Dim i As Long
On Error GoTo RegOptionError
''''if RootKey then


    Select Case id
''''=========================================================================================
        Case regSetKeyValue ''''=111   ''''设置键值
''''=========================================================================================
            rtn = RegOpenKeyEx(RootKey, SubKey, 0, KEY_WRITE, hKey)
            If rtn = ERROR_SUCCESS Then
''''{

            Select Case regKeyType
''''----------------------------------------------------------------------------------------
            Case regTypeBinary      ''''=&H00000001        ''''Binary

''''此模式下参数KeyValue须以字符串形式传入,调用实例:
''''SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos", "pos", "jadgekylin01@yesky.com", regTypeBinary, regSetKeyValue
''''----------------------------------------------------------------------------------------
                  If VarType(KeyValue) <> vbString Then  ''''参数不合法
                    rtn = ERROR_SUCCESS + 1
                    ''''exit select
                  Else
                  lDataSize = Len(KeyValue)
                  ReDim ByteArray(lDataSize)
                  For i = 1 To lDataSize
                      ByteArray(i) = Asc(Mid$(KeyValue, i, 1))
                  Next
                  rtn = RegSetValueExB(hKey, Key, 0, REG_BINARY, ByteArray(1), lDataSize) ''''write the value
                  End If
''''----------------------------------------------------------------------------------------
            Case regTypeDword   ''''=&H00000002    ''''DWORD

''''调用实例:
''''SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos", "pos", 1, regTypeDword, regSetKeyValue
''''----------------------------------------------------------------------------------------

                If VarType(KeyValue) <> vbLong And VarType(KeyValue) <> vbInteger Then
                    rtn = ERROR_SUCCESS + 1
                    ''''exit select
                Else
                rtn = RegSetValueExA(hKey, Key, 0, REG_DWORD, KeyValue, 4) ''''write the value
           &

[1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口