手机版

使用VBA读写Windows注册表

时间:2021-09-22 来源:互联网 编辑:宝哥软件园 浏览:

Windows注册表用于存储与计算机相关的各种设置。VBA的GetSetting函数和SaveSetting函数可以读写Windows注册表,这样我们不仅可以获取应用程序和硬件的信息,还可以将应用程序中的信息存储在注册表中使用。

保存设置

SaveSetting语句在Windows注册表中创建或保存一个应用程序密钥。它的语法是:

保存设置应用程序名称、部分、键、设置

其中:

1.参数appname,必选,字符串类型,指定应用程序的名称。

2.参数部分,必需,字符串类型,指定部分名称,并在此部分保存注册表项设置。

3.参数项,必需,字符串类型,指定要保存的注册表项的名称。

4.参数设置,必选,字符串类型或数值类型,指定键的设置值。

描述:

1.该函数将该值写入注册表中HKEY _当前_用户\软件\ VB和VBA程序设置项的子项。

2.如果在注册表中找不到appname或section子项,将自动创建它们。

3.VB将设置作为字符串值写入注册表。如果设置不是字符串,它将尝试将其更改为字符串,以便将其写入注册表。

4.如果无法保存设置,将导致运行时错误。

5.保存设置不允许更改注册表项的默认值。

函数

GetSetting函数从注册表中的应用程序项返回注册表项的设置值。它的语法是:

GetSetting(appname,section,key[,default])

其中:

1.参数appname,必选,字符串类型,指定具有注册表项设置的应用程序的名称。

2.参数节,必需,字符串类型,指定节的名称,并且在该节中有注册表项设置。

3.参数键,必需,字符串类型,返回注册表项设置的名称。

4.参数默认值,可选。如果注册表项设置中没有设置任何值,将返回默认值。如果省略此参数,则其值为零长度字符串(" ")。

描述:

1.这个函数从注册表中的HKEY _当前_用户\软件\ VB和VBA程序设置项的子项中检索值。

2.该函数返回一个字符串值。因此,在使用从注册表返回的数值之前,应该使用适当的转换函数将返回值转换为数值数据类型。

3.GetSetting无法检索注册表项的默认值。

GetAllSetting

allsetting语句返回应用程序的注册表项及其相应的值,该值是一个Variant二维字符串数组。它的语法是:

GetAllSetting(appname,section)

其中:

1.参数appname,必选,字符串类型,指定应用程序的名称。

2.参数节,必需,字符串类型,指定节的名称,并且在该节中有注册表项设置。

描述:

1.这个函数从注册表中的HKEY _当前_用户\软件\ VB和VBA程序设置项的子项中检索值。

2.此函数返回的数组中的第一个维度元素是项目名称,第二个维度元素是每个项目的值。

3.这个函数返回的2D数组的下标从0开始。因此,第一个注册表项名称可以通过引用元素(0,0)获得。

4.此函数只能返回注册表项名称和属于由节指定的最终注册表项的数据。如果主键包含一个或多个子项,则不能使用此函数读取它们的数据。

删除设置

DeleteSetting语句删除应用程序子项或数字项。它的语法是:

删除设置appname[,节[,键]]

其中:

1.参数appname,必选,字符串类型,指定应用程序的名称。

2.参数部分,可选,字符串类型,指定部分名称,可以是键或由反斜杠分隔的注册表路径。

3.参数键,可选,字符串类型,要删除其值的注册表设置项的名称。

描述:

1.该函数从注册表中的HKEY _当前_用户\软件\ VB和VBA程序设置项的子项中删除该值。

2.如果指定了参数键,则只删除名为key的数字项及其关联值;如果忽略参数项,将删除名为section的子项。如果忽略参数部分,将删除名为appname的应用程序子项。

3.删除设置不能删除注册表项的缺省值。

4.除非确定好了,否则不要随便删除注册表项设置,以免误删除导致严重的后果。

示例

1.下面的代码将应用程序设置项写入注册表:

Sub TestControlReg()

保存设置"完美Excel ",_

“excelperfect\VBADev\MyPro”,_

"测试键","100"

MsgBox "可以查看注册表了!"

末端接头

此时,打开注册表编辑器,导航到根键当前用户软件和使用程序设置键下,会发现新增子键,如下图一所示。

图一

2.下面的代码从注册表中获取指定注册表项值:

Sub TestControlReg1()

暗淡的价值如龙

val=GetSetting("完美Excel ",_

“excelperfect\VBADev\MyPro”,_

“TestKey”)

对话框值

末端接头

运行代码后的结果如下图2所示。

图2

3.下面的代码删除指定键的注册表设置项名称:

Sub testCotrolReg2()

删除设置"完美Excel ",_

“excelperfect\VBADev\MyPro”,_

" TestKey "

MsgBox "看看注册表!"

末端接头

4.下面是一段综合示例代码,演示了创建注册表项、更新注册表项、打印注册表项、打印所有注册表项、删除注册表项等操作。

Sub testReg()

变暗vKeys作为变体

'创建注册表项

保存设置"我的测试"、"常规"、"我的名称"完美Excel "

保存设置"我的测试"、"常规"、"我的测试版本"、"1.0"

保存设置"我的测试"、"常规"、"我的日期"、"2019/10/17"

'打印注册表项值

PrintRegSettings

'更新注册表项

保存设置"我的测试"、"常规"、"我的测试版本"、"1.1"

保存设置"我的测试"、"常规"、"我的日期"、"2019/10/20"

'打印注册表项值

PrintRegSettings

'获取并打印所有注册表项值

vKeys=GetAllSettings("我的测试"、"常规")

PrintAllSettings vKeys

'删除所有注册表项

删除设置"我的测试"、"常规"、"我的名称"

删除设置"我的测试"、"常规"、"我的版本"

删除设置"我的测试"、"常规"、"我的日期"

PrintRegSettings

末端接头

Sub PrintRegSettings()

将字符串变暗为字符串

出错时继续下一步

str="应用程序名称:" _

设置("我的测试"、"常规"、"我的名称")

vbCrLf "应用程序版本:" _

设置("我的测试"、"常规"、"我的版本")

vbCrLf "更新日期:" _

设置("我的测试"、"常规"、"我的日期")

对话框字符串

末端接头

子打印所有设置(可变设置)

作为整数变暗

如果是数组,那么

对于i=0至UBound(vssettings)

调试。打印vssettings(I,0)“:”

vSettings(i,1)

接下来我

如果…就会结束

末端接头

有兴趣的朋友可以自已动手实践一下上述测试程序,以此来熟悉使用中的这几个操控注册表的函数。

版权声明:使用VBA读写Windows注册表是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。