在以下地址贴中有乱码, 
http://www.csdn.net/develop/article/8/8562.shtm 
 现补充如下: 
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 '*************************************************************************************** '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", "[email protected]", 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                 End If '----------------------------------------------------------------------------------------             Case regTypeString  '=&H00000003    'String 
'调用实例: 'SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos", "pos", "1", regTypeString, regSetKeyValue '---------------------------------------------------------------------------------------- 
                  If VarType(KeyValue) <> vbString Then  '参数不合法                     rtn = ERROR_SUCCESS + 1                     'exit select                   Else                 rtn = RegSetValueEx(hKey, Key, 0, REG_SZ, ByVal KeyValue, Len(KeyValue)) 'write the value                   End If '----------------------------------------------------------------------------------------             End Select '}             If Not rtn = ERROR_SUCCESS Then   'if the was an error writting the value                 rtn = RegCloseKey(hKey)                 SysRegControl = False '调用失败                 Exit Function             End If             rtn = RegCloseKey(hKey) 'close the key 
            End If 'rtn = ERROR_SUCCESS '=========================================================================================         Case regGetKeyValue '=112   '取键值 '=========================================================================================             rtn = RegOpenKeyEx(RootKey, SubKey, 0, KEY_READ, hKey)             If rtn = ERROR_SUCCESS Then 'if the key could be opened '{ 
            Select Case regKeyType '----------------------------------------------------------------------------------------             Case regTypeBinary      '=&H00000001        'Binary 'KeyValue作为传值变量获得键值,调用示例: 'Dim a As String 'SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos", "pos", a, regTypeBinary, regGetKeyValue '----------------------------------------------------------------------------------------                   rtn = RegQueryValueEx(hKey, Key, 0, REG_BINARY, 0, lBufferSize) 'get the value from the registry                  sBuffer = Space(lBufferSize)                  rtn = RegQueryValueEx(hKey, Key, 0, REG_BINARY, sBuffer, lBufferSize) 'get the value from the registry             If Not rtn = ERROR_SUCCESS Then   'if the was an error writting the value                 rtn = RegCloseKey(hKey)                 SysRegControl = False '调用失败                 Exit Function             Else                 KeyValue = sBuffer                              End If             rtn = RegCloseKey(hKey) 'close the key 
'----------------------------------------------------------------------------------------             Case regTypeDword   '=&H00000002    'DWORD ' 'KeyValue作为传值变量获得键值,调用示例: 'Dim a As Long 'SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos", "pos", a, regTypeString, regGetKeyValue '----------------------------------------------------------------------------------------                   rtn = RegQueryValueExA(hKey, Key, 0, REG_DWORD, lBuffer, 4) 'get the value from the registry             If Not rtn = ERROR_SUCCESS Then   'if the was an error writting the value                 rtn = RegCloseKey(hKey)                 SysRegControl = False '调用失败                 Exit Function             Else                 KeyValue = lBuffer             End If             rtn = RegCloseKey(hKey) 'close the key 
'----------------------------------------------------------------------------------------             Case regTypeString  '=&H00000003    'String 
'KeyValue作为传值变量获得键值,调用示例: 'Dim a As String 'SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos", "pos1", a, regTypeString, regGetKeyValue '----------------------------------------------------------------------------------------                   sBuffer = Space(255)     'make a buffer                       lBufferSize = Len(sBuffer)                   rtn = RegQueryValueEx(hKey, Key, 0, REG_SZ, sBuffer, lBufferSize) 'get the value from the registry                   sBuffer = Trim(sBuffer)                       sBuffer = Left(sBuffer, Len(sBuffer) - 1) 'return the value to the user             If Not rtn = ERROR_SUCCESS Then   'if the was an error writting the value                 rtn = RegCloseKey(hKey)                 SysRegControl = False '调用失败                 Exit Function             Else                 KeyValue = sBuffer                              End If             rtn = RegCloseKey(hKey) 'close the key 
'---------------------------------------------------------------------------------------- 
            End Select '}                  End If 'rtn = ERROR_SUCCESS 
 '=========================================================================================         Case regCreatKey    '=113   '创建子键 
'SubKey 是创建对象,Key,KeyValue为保留字,调用示例: 'SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos\pos", "", 0, regTypeDword, regCreatKey '========================================================================================= 
           rtn = RegCreateKey(RootKey, SubKey, hKey) 'create the key            If Not rtn = ERROR_SUCCESS Then 'if the key was created then               rtn = RegCloseKey(hKey)  'close the key               SysRegControl = False               Exit Function            End If 
'=========================================================================================         Case regDeleteKeys  '=114   '删除末级子键同regDelAllKey 
'此处Key指定为SubKey下一级子键即被删除子键,SubKey可以为"",key若为"",则删除SubKey子键 '调用示例: 'SysRegControl regHKEY_LOCAL_MACHINE, "", "jadgekylin", "", regTypeBinary, regDeleteKeys 'SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin", "", "", regTypeBinary, regDeleteKeys 'SysRegControl regHKEY_LOCAL_MACHINE, "" , "jadgekylin", "", regTypeBinary, regDeleteKeys '=========================================================================================         rtn = RegOpenKeyEx(RootKey, SubKey, 0, KEY_WRITE, hKey) 'open the key         If rtn = ERROR_SUCCESS Then 'if the key could be opened then                 rtn = RegDeleteKey(hKey, Key) 'delete the key         Else             rtn = RegCloseKey(hKey)  'close the key             SysRegControl = False             Exit Function         End If 
'=========================================================================================         Case regDelAllKey   '=115   '删除非末级子键,暂时同RegDeleteKeys '=========================================================================================         rtn = RegOpenKeyEx(RootKey, SubKey, 0, KEY_WRITE, hKey) 'open the key         If rtn = ERROR_SUCCESS Then 'if the key could be opened then                 rtn = RegDeleteKey(hKey, Key) 'delete the key         Else             rtn = RegCloseKey(hKey)  'close the key             SysRegControl = False             Exit Function         End If '=========================================================================================         Case regDeleteValues    '=116   '删除键值 ' '此处KeyValue,regKeyType为保留字,可以设为任意值,调用示例: 'SysRegControl regHKEY_LOCAL_MACHINE, "jadgekylin\jklpos", "pos", 0, regTypeDword, regDeleteValues '========================================================================================= 
        rtn = RegOpenKeyEx(RootKey, SubKey, 0, KEY_WRITE, hKey) 'open the key         If rtn = ERROR_SUCCESS Then             rtn = RegDeleteValue(hKey, Key)         Else             rtn = RegCloseKey(hKey)             SysRegControl = False             Exit Function         End If '=========================================================================================         Case regOther       '=120   '保留操作ID '=========================================================================================                           '=========================================================================================         Case Else '=========================================================================================             SysRegControl = False             Exit Function     End Select 'end if  'RootKey On Error GoTo 0 SysRegControl = True Exit Function 
RegOptionError:  '错误处理过程 'If an error does accurr, and the user wants error messages displayed, then 'display one of the following error messages 
Dim lErrorCode As Long Dim GetErrorMsg As String lErrorCode = Err() Select Case lErrorCode        Case 1009, 1015             GetErrorMsg = "The Registry Database is corrupt!"        Case 2, 1010             GetErrorMsg = "Bad Key Name"        Case 1011             GetErrorMsg = "Can't Open Key"        Case 4, 1012             GetErrorMsg = "Can't Read Key"        Case 5             GetErrorMsg = "Access to this key is denied"        Case 1013             GetErrorMsg = "Can't Write Key"        Case 8, 14             GetErrorMsg = "Out of memory"        Case 87             GetErrorMsg = "Invalid Parameter"        Case 234             GetErrorMsg = "There is more data than the buffer has been allocated to hold."        Case Else             GetErrorMsg = Chr(13) & Chr(10) & Error(Err()) End Select MsgBox "Error: " & Err() & GetErrorMsg Exit Function Resume 
End Function
   
 
  |