99网
您的当前位置:首页VBA操作注册表的三种方法

VBA操作注册表的三种方法

来源:99网


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\

xRegValue

\"ValueTwo\

= Array(\"ValueOne\

'写入注册表

For i = 0 To UBound(xRegKey)

SaveSetting\"ProjectName\\"RegItems\xRegValue(i)

Next

'读取注册表

For i = 0 To UBound(xRegKey)

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

MsgBox xValue

Next

'获取所有键值

xAllKeyValueArr

GetAllSettings(\"ProjectName\

'删除键值

xRegKey(i),

=

\"RegItems\

DeleteSetting \"ProjectName\

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\\"KeyFour\")

\"KeyTwo\

xRegValue = Array(\"ValueOne\\"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\est\" '创建注册表键值

'写入注册表

xWMIObj.SetBinaryValue HKEY_CURRENT_USER,

\"MyTest\est\

xWMIObj.SetStringValue

HKEY_CURRENT_USER,\"MyTest\est\

xWMIObj.SetDWORDValue

HKEY_CURRENT_USER,\"MyTest\est\

'读取注册表

xWMIObj.getbinaryvalue

HKEY_CURRENT_USER,\"MyTest\est\

For i = 0 To UBound(xValue)

MsgBox xValue(i)

Next

'xWMIObj.deletevalue

HKEY_CURRENT_USER,\"MyTest\est\

xWMIObj.EnumValues

HKEY_CURRENT_USER,\"MyTest\est\

For i = 0 To UBound(xName)

If xType(i) = 1Then

xWMIObj.Getstringvalue \"MyTest\est\

HKEY_CURRENT_USER,

MsgBox xValue

ElseIf xType(i) =4 Then

xWMIObj.GetDWORDValue \"MyTest\est\

HKEY_CURRENT_USER,

MsgBox xValue

End If

Next

'删除注册表

xWMIObj.DeleteKey

HKEY_CURRENT_USER,\"MyTest\est\"

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

因篇幅问题不能全部显示,请点此查看更多更全内容