首页 > 单独文章 > 正文

教大家用VBA来控制注册表

时间:2009-06-12 22:22:12 作者:officeba 【认证】
教大家用VBA来控制注册表,三种办法
1、利用强大的API函数。API功能强大,除了其它功能外也可以用来操作注册表,但一般都会封装原始的API函数,使操作注册表更方法
2、利用Windows Scripting Host的注册表函数来完成。WSH的RegWrite(设置注册表的键或值),RegRead(获得注册表的键或值与RegDelete(删除键或值)也可以用来操作注册表,而且没有上面的限制,下面还是用一段代码来了解这三个函数的用法:

Sub 利用WSH操作注册表()
Dim 注册表主键 As String
Dim 工程名称 As String
Dim 注册表项 As String
Dim 注册表键名 As Variant
Dim 注册表键值 As Variant
Dim arr As Variant
Dim ii As Integer
Dim WSH As WshShell

Set WSH = CreateObject("WSCRIPT.SHELL")
注册表主键 = "HKEY_CURRENT_USER\Software\"
工程名称 = "Excel吧"
注册表项 = "网站"
注册表键名 = Array("地址", "站长", "创建时间")
注册表键值 = Array("http://www.excelba.com", "bengdeng", "2006-03-01")

For ii = 0 To UBound(注册表键名)
    WSH.RegWrite 注册表主键 & 工程名称 & "\" & 注册表项 & "\" & 注册表键名(ii), 注册表键值(ii)
Next
MsgBox "已成功在" & 注册表主键 & "中写入键值!"
MsgBox "接下来利用RegRead一个个读出写入的键值"
For ii = 0 To UBound(注册表键名)
    MsgBox 工程名称 & 注册表项 & 注册表键名(ii) & "是" & WSH.RegRead(注册表主键 & 工程名称 & "\" & 注册表项 & "\" & 注册表键名(ii))
Next
WSH.RegDelete 注册表主键 & 工程名称 & "\" & 注册表项 & "\"
WSH.RegDelete 注册表主键 & 工程名称 & "\"
MsgBox "已成功删除写入的键值!"
End Sub
3、利用内置的操作注册表的函数来完成。VB或VBA有四个内置操作注册表的函数,分别是SaveSetting(设置注册表的键或值),GetSetting(获得注册表的键或值),GetAllSettings(获得键下所有的键值)与DeleteSetting(删除键或值)。具体的说明在帮助里有,就不重复了。不过这四个函数只能在HKEY_CURRENT_USER\Software\VB and VBA Program Setting这个键值下操作,因此还是有所限制,下面就通过一段代码来熟悉一下这四个函数:

Sub 利用内置函数操作注册表()
Dim 工程名称 As String
Dim 注册表项 As String
Dim 注册表键名 As Variant
Dim 注册表键值 As Variant
Dim arr As Variant
Dim ii As Integer

工程名称 = "Excel吧"
注册表项 = "网站"
注册表键名 = Array("地址", "站长", "创建时间")
注册表键值 = Array("http://www.excelba.com", "bengdeng", "2006-03-01")

For ii = 0 To UBound(注册表键名)
    SaveSetting 工程名称, 注册表项, 注册表键名(ii), 注册表键值(ii)
Next
MsgBox "已成功在HKEY_CURRENT_USER\Software\VB and VBA Program Setting中写入键值!"
MsgBox "接下来利用GetSetting一个个读出写入的键值"
For ii = 0 To UBound(注册表键名)
    MsgBox 工程名称 & 注册表项 & 注册表键名(ii) & "是" & GetSetting(工程名称, 注册表项, 注册表键名(ii))
Next
MsgBox "接下来利用GetAllSettings读出所有写入的键值"
arr = GetAllSettings(工程名称, 注册表项)

For ii = LBound(arr, 1) To UBound(arr, 1)
    MsgBox 工程名称 & 注册表项 & arr(ii, 0) & "是" & arr(ii, 1)
Next
DeleteSetting 工程名称
MsgBox "已成功删除写入的键值!"
End Sub
到此,三种教VBA来控制注册表介绍结束

相关文章

同类最新