打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA操作注册表的三种方法

1. 利用VBA内置的方法实现。VBA内置操作注册表的四个函数分别是SaveSetting(写入注册表)、GetSetting(读取注册表)、GetAllSettings(获得注册表的键和值)和DeleteSetting(删除键或值)。但内置方法只能操作注册表中的HKEY_CURRENT_USER\Software\VB and VBAprogramSettings下的子键或者注册表

Sub Build_inReg()

Dim xRegKey As Variant

Dim xRegValue As Variant

Dim i As Integer

Dim xValue As String

Dim xAllKeyValueArr As Variant

On Error Resume Next

xRegKey = Array("KeyOne", "KeyTwo","KeyThree")

xRegValue = Array("ValueOne", "ValueTwo","ValueThree")

'写入注册表

For i = 0 To UBound(xRegKey)

  SaveSetting"ProjectName", "RegItems", xRegKey(i), xRegValue(i)

Next

'读取注册表

For i = 0 To UBound(xRegKey)

  xValue =GetSetting("ProjectName", "RegItems", xRegKey(i),xRegValue(i))

  MsgBox xValue

Next

'获取所有键值

xAllKeyValueArr = GetAllSettings("ProjectName","RegItems")

'删除键值

DeleteSetting "ProjectName","RegItems"

End Sub

2. 利用WindowsScripting Host的注册表函数来完成。WSH的RegWrite(设置注册表的键和值),RegRead(获得注册表的键和值),RegDelete(删除键和值)。

Sub WSHReg()

Dim xRegMainKey As String

Dim xRegKey As Variant

Dim xRegValue As Variant

Dim i As Integer

Dim xValue As String

Dim xWSH As Object

On Error Resume Next

Set xWSH = CreateObject("WScript.Shell")

xRegMainKey = "HKEY_CURRENT_USER\Software\" '按自己需求选择注册表主键

xRegKey = Array("KeyOne", "KeyTwo","KeyThree", "KeyFour")

xRegValue = Array("ValueOne", "Valuetwo","ValueThree", "ValueFour")

'写入注册表

For i = 0 To UBound(xRegKey)

  xWSH.RegWritexRegMainKey + "ProjectName" + "\" + "RegItems" +"\" + xRegKey(i), xRegValue(i) '(xRegMainKey +"ProjectName" + "\" + "RegItems" + "\"+ xRegKey(i) + xRegValue(i))

Next

'读取注册表

For i = 0 To UBound(xRegKey)

  xValue =xWSH.RegRead(xRegMainKey + "ProjectName" + "\RegItems\" +xRegKey(i))

  MsgBox xValue

Next

'删除注册表

xWSH.RegDelete xRegMainKey & "ProjectName"& "\RegItems\"

xWSH.RegDelete xRegMainKey & "ProjectName\"

End Sub

3.使用WMI(WindowsManagement Instrumentation)对象的StdRenProv类操作注册表,没有范围限制、功能强大。

Sub WMIReg()

Dim xValue

Dim xName

Dim xType

Dim i As Integer

Dim xStrTemp As String

Dim xWMIObj As Object

On Error Resume Next

Const HKEY_CURRENT_USER = &H80000001

Set xWMIObj = GetObject("winmgmts:\\.\root\default:StdRegProv")

xWMIObj.CreateKey HKEY_CURRENT_USER,"MyTest\test"                 '创建注册表键值

'写入注册表

xWMIObj.SetBinaryValue HKEY_CURRENT_USER, "MyTest\test","test1", Array(&H0, &H0, &H1)

xWMIObj.SetStringValue HKEY_CURRENT_USER,"MyTest\test", "test2", "2"

xWMIObj.SetDWORDValue HKEY_CURRENT_USER,"MyTest\test", "test3", "3"

'读取注册表

xWMIObj.getbinaryvalue HKEY_CURRENT_USER,"MyTest\test", "test1", xValue

For i = 0 To UBound(xValue)

  MsgBox xValue(i)

Next

'xWMIObj.deletevalue HKEY_CURRENT_USER,"MyTest\test", "test1"

xWMIObj.EnumValues HKEY_CURRENT_USER,"MyTest\test", xName, xType

For i = 0 To UBound(xName)

  If xType(i) = 1Then

   xWMIObj.Getstringvalue HKEY_CURRENT_USER, "MyTest\test",xName(i), xValue

    MsgBox xValue

  ElseIf xType(i) =4 Then

   xWMIObj.GetDWORDValue HKEY_CURRENT_USER, "MyTest\test",xName(i), xValue

    MsgBox xValue

  End If

Next

'删除注册表

xWMIObj.DeleteKey HKEY_CURRENT_USER,"MyTest\test"

xWMIObj.DeleteKey HKEY_CURRENT_USER, "MyTest"

End Sub

注意:

1:

HKEY_CLASSES_ROOT       0x80000000

HKEY_CURRENT_USER       0x80000001

HKEY_LOCAL_MACHINE       0x80000002

HKEY_USERS       0x80000003

HKEY_CURRENT_CONFIG       0x80000005

2:

REG_SZ(字符串型)       1

REG_EXPAND(可扩充字符串型)       2

REG_BINARY(二进制型)       3

REG_DWORD(双字节型)       4

REG_MULTI_SZ(多字符串型)       7

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VB的API编程精粹
用Asp修改注册表
误删注册表HKEY
如何用.NET操作Windows注册表
如何获取CPU的温度
如何在Windows操作系统中改变文件打开方式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服