一个操作注册表的类.docx

上传人:b****4 文档编号:6746798 上传时间:2023-05-10 格式:DOCX 页数:8 大小:21.83KB
下载 相关 举报
一个操作注册表的类.docx_第1页
第1页 / 共8页
一个操作注册表的类.docx_第2页
第2页 / 共8页
一个操作注册表的类.docx_第3页
第3页 / 共8页
一个操作注册表的类.docx_第4页
第4页 / 共8页
一个操作注册表的类.docx_第5页
第5页 / 共8页
一个操作注册表的类.docx_第6页
第6页 / 共8页
一个操作注册表的类.docx_第7页
第7页 / 共8页
一个操作注册表的类.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

一个操作注册表的类.docx

《一个操作注册表的类.docx》由会员分享,可在线阅读,更多相关《一个操作注册表的类.docx(8页珍藏版)》请在冰点文库上搜索。

一个操作注册表的类.docx

一个操作注册表的类

一个操作注册表的类

'因发现询问注册表操作的网友比较多,特整理了一套注册表操作的函数,以下代码直接Copy即可运行。

OptionExplicit

'注册表主键

PublicEnumenumRegMainKey

  iHKEY_CURRENT_USER=&H80000001

  iHKEY_LOCAL_MACHINE=&H80000002

  iHKEY_CLASSES_ROOT=&H80000000

  iHKEY_CURRENT_CONFIG=&H80000005

  iHKEY_USERS=&H80000003

EndEnum

'注册表数据类型

PublicEnumenumRegSzType

  iREG_SZ=&H1

  iREG_EXPAND_SZ=&H2

  iREG_BINARY=&H3

  iREG_DWORD=&H4

  iREG_NONE=0&

  iREG_DWORD_LITTLE_ENDIAN=4&

  iREG_DWORD_BIG_ENDIAN=5&

  iREG_LINK=6&

  iREG_MULTI_SZ=7&

  iREG_RESOURCE_LIST=8&

  iREG_FULL_RESOURCE_DESCRIPTOR=9&

  iREG_RESOURCE_REQUIREMENTS_LIST=10&

EndEnum

'注册表

PrivateConstERROR_SUCCESS=0&

PrivateConstERROR_BADDB=1009&

PrivateConstERROR_BADKEY=1010&

PrivateConstERROR_CANTOPEN=1011&

PrivateConstERROR_CANTREAD=1012&

PrivateConstERROR_CANTWRITE=1013&

PrivateConstERROR_OUTOFMEMORY=14&

PrivateConstERROR_INVALID_PARAMETER=87&

PrivateConstERROR_ACCESS_DENIED=5&

PrivateConstERROR_NO_MORE_ITEMS=259&

PrivateConstERROR_MORE_DATA=234&

PrivateConstKEY_QUERY_VALUE=&H1&

PrivateConstKEY_SET_VALUE=&H2&

PrivateConstKEY_CREATE_SUB_KEY=&H4&

PrivateConstKEY_ENUMERATE_SUB_KEYS=&H8&

PrivateConstKEY_NOTIFY=&H10&

PrivateConstKEY_CREATE_LINK=&H20&

PrivateConstSYNCHRONIZE=&H100000

PrivateConstREAD_CONTROL=&H20000

PrivateConstWRITE_DAC=&H40000

PrivateConstWRITE_OWNER=&H80000

PrivateConstSTANDARD_RIGHTS_REQUIRED=&HF0000

PrivateConstSTANDARD_RIGHTS_READ=READ_CONTROL

PrivateConstSTANDARD_RIGHTS_WRITE=READ_CONTROL

PrivateConstSTANDARD_RIGHTS_EXECUTE=READ_CONTROL

PrivateConstKEY_READ=STANDARD_RIGHTS_READOrKEY_QUERY_VALUEOrKEY_ENUMERATE_SUB_KEYSOrKEY_NOTIFY

PrivateConstKEY_WRITE=STANDARD_RIGHTS_WRITEOrKEY_SET_VALUEOrKEY_CREATE_SUB_KEY

PrivateConstKEY_EXECUTE=KEY_READ

PrivateDeclareFunctionRegCreateKeyLib"advapi32.dll"Alias"RegCreateKeyA"(ByValhKeyAsLong,ByVallpSubKeyAsString,phkResultAsLong)AsLong

PrivateDeclareFunctionRegCreateKeyExLib"advapi32.dll"Alias"RegCreateKeyExA"(ByValhKeyAsLong,ByVallpSubKeyAsString,ByValReservedAsLong,ByVallpClassAsString,ByValdwOptionsAsLong,ByValsamDesiredAsLong,lpSecurityAttributesAsSECURITY_ATTRIBUTES,phkResultAsLong,lpdwDispositionAsLong)AsLong

PrivateDeclareFunctionRegEnumValueLib"advapi32.dll"Alias"RegEnumValueA"(ByValhKeyAsLong,ByValdwIndexAsLong,ByVallpValueNameAsString,lpcbValueNameAsLong,ByVallpReservedAsLong,lpTypeAsLong,lpDataAsByte,lpcbDataAsLong)AsLong

PrivateDeclareFunctionRegEnumKeyExLib"advapi32.dll"Alias"RegEnumKeyExA"(ByValhKeyAsLong,ByValdwIndexAsLong,ByVallpNameAsString,lpcbNameAsLong,ByVallpReservedAsLong,ByVallpClassAsString,lpcbClassAsLong,lpftLastWriteTimeAsFILETIME)AsLong

PrivateDeclareFunctionRegOpenKeyExLib"advapi32.dll"Alias"RegOpenKeyExA"(ByValhKeyAsLong,ByVallpSubKeyAsString,ByValulOptionsAsLong,ByValsamDesiredAsLong,phkResultAsLong)AsLong

PrivateDeclareFunctionRegCloseKeyLib"advapi32.dll"(ByValhKeyAsLong)AsLong

PrivateDeclareFunctionRegDeleteValueLib"advapi32.dll"Alias"RegDeleteValueA"(ByValhKeyAsLong,ByVallpValueNameAsString)AsLong

PrivateDeclareFunctionRegSetValueExLib"advapi32.dll"Alias"RegSetValueExA"(ByValhKeyAsLong,ByVallpValueNameAsString,ByValReservedAsLong,ByValdwTypeAsLong,ByVallpDataAsString,ByValcbDataAsLong)AsLong

PrivateDeclareFunctionRegSetValueExLongLib"advapi32.dll"Alias"RegSetValueExA"(ByValhKeyAsLong,ByVallpValueNameAsString,ByValReservedAsLong,ByValdwTypeAsLong,lpDataAsLong,ByValcbDataAsLong)AsLong

PrivateDeclareFunctionRegSetValueExALib"advapi32.dll"(ByValhKeyAsLong,ByVallpValueNameAsString,ByValReservedAsLong,ByValdwTypeAsLong,ByReflpDataAsLong,ByValcbDataAsLong)AsLong

PrivateDeclareFunctionRegQueryValueExLib"advapi32.dll"Alias"RegQueryValueExA"(ByValhKeyAsLong,ByVallpValueNameAsString,ByVallpReservedAsLong,lpTypeAsLong,lpDataAsAny,lpcbDataAsLong)AsLong      'NotethatifyoudeclarethelpDataparameterasString,youmustpassitByValue.

PrivateDeclareFunctionRegDeleteKeyLib"advapi32.dll"Alias"RegDeleteKeyA"(ByValhKeyAsLong,ByVallpSubKeyAsString)AsLong

PrivateDeclareFunctionRegSaveKeyLib"advapi32.dll"Alias"RegSaveKeyA"(ByValhKeyAsLong,ByVallpFileAsString,ByVallpSecurityAttributesAsLong)AsLong

PrivateDeclareFunctionRegRestoreKeyLib"advapi32.dll"Alias"RegRestoreKeyA"(ByValhKeyAsLong,ByVallpFileAsString,ByValdwflagsAsLong)AsLong

PrivateTypeFILETIME

  dwLowDateTimeAsLong

  dwHighDateTimeAsLong

EndType

PrivateTypeSECURITY_ATTRIBUTES

  nLengthAsLong

  lpSecurityDescriptorAsLong

  bInheritHandleAsBoolean

EndType

PublicFunctionGetValue(ByValmainKeyAsenumRegMainKey,_

                ByValsubKeyAsString,_

                ByValkeyVAsString,_

                ByRefsValueAsVariant,_

                OptionalByRefrlngErrNumAsLong,_

                OptionalByRefrstrErrDescrAsString)AsBoolean

  

  DimhKeyAsLong,lTypeAsLong,lBufferAsLong,sBufferAsString,lDataAsLong

  OnErrorGoToGetValueErr

  GetValue=False

  

  IfRegOpenKeyEx(mainKey,subKey,0,KEY_READ,hKey)<>ERROR_SUCCESSThen

    Err.RaisevbObjectError+1,,"获取注册表值时出错"

  EndIf

  

  IfRegQueryValueEx(hKey,keyV,0,lType,ByVal0,lBuffer)<>ERROR_SUCCESSThen

    Err.RaisevbObjectError+1,,"获取注册表值时出错"

  EndIf

  

  SelectCaselType

    CaseiREG_SZ

      lBuffer=255

      sBuffer=Space(lBuffer)

      IfRegQueryValueEx(hKey,keyV,0,lType,ByValsBuffer,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"获取注册表值时出错"

      EndIf

      sValue=Left(sBuffer,InStr(sBuffer,Chr(0))-1)

      

    CaseiREG_EXPAND_SZ

      sBuffer=Space(lBuffer)

      IfRegQueryValueEx(hKey,keyV,0,lType,ByValsBuffer,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"获取注册表值时出错"

      EndIf

      sValue=Left(sBuffer,InStr(sBuffer,Chr(0))-1)

      

    CaseiREG_DWORD

      IfRegQueryValueEx(hKey,keyV,0,lType,lData,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"获取注册表值时出错"

      EndIf

      sValue=lData

      

    CaseiREG_BINARY

      IfRegQueryValueEx(hKey,keyV,0,lType,lData,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"获取注册表值时出错"

      EndIf

      sValue=lData

      

  EndSelect

  

  IfRegCloseKey(hKey)<>ERROR_SUCCESSThen

    Err.RaisevbObjectError+1,,"获取注册表值时出错"

  EndIf

  

  GetValue=True

  

  Err.Clear

GetValueErr:

  rlngErrNum=Err.Number

  rstrErrDescr=Err.Description

  

EndFunction

PublicFunctionSetValue(ByValmainKeyAsenumRegMainKey,_

                ByValsubKeyAsString,_

                ByValkeyVAsString,_

                ByVallTypeAsenumRegSzType,_

                ByValsValueAsVariant,_

                OptionalByRefrlngErrNumAsLong,_

                OptionalByRefrstrErrDescrAsString)AsBoolean

                

  DimSAsLong,lBufferAsLong,hKeyAsLong

  DimssAsSECURITY_ATTRIBUTES

  OnErrorGoToSetValueErr

  SetValue=False

  

  ss.nLength=Len(ss)

  ss.lpSecurityDescriptor=0

  ss.bInheritHandle=True

  IfRegCreateKeyEx(mainKey,subKey,0,"",0,KEY_WRITE,ss,hKey,S)<>ERROR_SUCCESSThen

    Err.RaisevbObjectError+1,,"设置注册表时出错"

  EndIf

  

  SelectCaselType

    CaseiREG_SZ

      lBuffer=LenB(sValue)

      IfRegSetValueEx(hKey,keyV,0,lType,ByValsValue,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"设置注册表时出错"

      EndIf

      

    CaseiREG_EXPAND_SZ

      lBuffer=LenB(sValue)

      IfRegSetValueEx(hKey,keyV,0,lType,ByValsValue,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"设置注册表时出错"

      EndIf

      

    CaseiREG_DWORD

      lBuffer=4

      IfRegSetValueExA(hKey,keyV,0,lType,sValue,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"设置注册表时出错"

      EndIf

      

    CaseiREG_BINARY

      lBuffer=4

      IfRegSetValueExA(hKey,keyV,0,lType,sValue,lBuffer)<>ERROR_SUCCESSThen

        Err.RaisevbObjectError+1,,"设置注册表时出错"

      EndIf

    

    CaseElse

      Err.RaisevbObjectError+1,,"不支持该参数类型"

      

  EndSelect

  

  IfRegCloseKey(hKey)<>ERROR_SUCCESSThen

    Err.RaisevbObjectError+1,,"设置注册表时出错"

  EndIf

  

  SetValue=True

  

  Err.Clear

SetValueErr:

  rlngErrNum=Err.Number

  rstrErrDescr=Err.Description

  

EndFunction

PublicFunctionDeleteValue(ByValmainKeyAsenumRegMainKey,_

                  ByValsubKeyAsString,_

                  ByValkeyVAsString,_

                  OptionalByRefrlngErrNumAsLong,_

                  OptionalByRefrstrErrDescrAsString)AsBoolean

  DimhKeyAsLong

  

  OnErrorGoToDeleteValueErr

  DeleteValue=False

  

  IfRegOpenKeyEx(mainKey,subKey,0,KEY_WRITE,hKey)<>ERROR_SUCCESSThen

    Err.RaisevbObjectError+1,,"删除注册表值时出错"

  EndIf

  

  IfRegDeleteValue(hKey,keyV)<>ERROR_SUCCESSThen

    Err.RaisevbObjectError+1,,"删除注册表值时出错"

  EndIf

  

  IfRegCloseKey(hKey)<>ERROR_S

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2