VBA使用GetSetting函数和SaveSetting函数读写注册表设置
2014-03-04 18:30
363 查看
Windows注册表是一个数据库,用于存储与计算机不同方面相关的设置,例如用户设置、应用程序设备、硬件设置等等。VB和VBA中提供了用于读写注册表的两个函数:GetSetting和SaveSetting。利用这两个函数可以与注册表直接交互,这不仅允许我们获取其它程序和硬件的信息,而且也能够使我们选择应用程序中的重要信息并将其存储在注册表中。但是这两个函数仅能访问下面的注册表句柄键:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings
一、GetSetting
功能:从Windows 注册表中的应用程序项目返回注册表项设置值(从注册表读取数据)。
语法:GetSetting(appname, section, key[, default])
GetSetting 函数的语法具有下列命名参数:
appname 必要。字符串表达式,包含应用程序或工程的名称,要求这些应用程序或工程有注册表项设置。
section 必要。字符串表达式,包含区域名称,要求该区域有注册表项设置。
key 必要。字符串表达式,返回注册表项设置的名称。
default 可选。表达式,如果注册表项设置中没有设置值,则返回缺省值。如果省略,则 default 取值为长度为零的字符串 ("")。
说明:如果 GetSetting 的参数中的任何一项都不存在,则 GetSetting 返回 default 的值。
二、SaveSetting
功能:在 Windows 注册表中保存或建立应用程序项目(把信息写入注册表)。
语法:SaveSetting appname, section, key, setting
SaveSetting 语句的语法具有下列命名参数:
appname 必要。字符串表达式,包含应用程序或工程的名称,对这些应用程序或工程使用设置
section 必要。字符串表达式,包含区域名称,在该区域保存注册表项设置。
key 必要。字符串表达式,包含将要保存的注册表项设置的名称。
setting 必要。表达式,包含 key 的设置值。
SaveSetting 语句示例
下列示例首先使用 SaveSetting 语句来建立 Windows 注册区(或 16 位 Windows 平台的.ini 档)里 MyApp 应用程序的项目,然后使用 DeleteSetting 语句来将之删除。
' 在注册区中添加一些设置值。
SaveSetting appname := "MyApp", section := "Startup", _
key := "Top", setting := 75
SaveSetting "MyApp","Startup", "Left", 50
' 删除区段及所有的设置值。
DeleteSetting "MyApp", "Startup
可以使用注册表来存储应用程序的初始和配置的设置。VBA允许读写下列注册表路径中的注册表设置:
\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\{子键}
要在这个注册表路径中读取注册表设置,使用GetSetting函数。要写入注册表设置到该注册表路径中,使用SaveSetting函数。注意,不正确地修改注册表会导致严重的后果,甚至需要重新安装操作系统。
GetSetting函数和SaveSetting函数的语法如下:
SaveSetting(AppName,Section,Key,Setting)
GetSetting(AppName,Section,Key[,Default])
其中:
参数AppName必需,String类型,指定VB and VBA Program Settings键的子键;
参数Section必需,String类型,在参数AppName中指定的键的子键;
参数Key必需,String类型,在参数Section中指定的键的值;
参数Setting必需,String类型或数值型,存储在参数Key指定的值中的一块数据;
参数default可选,String类型,指定当参数Key中没有设置值时返回的数据。
使用DeleteSetting函数删除子键或值,其语法为:
DeleteSetting(AppName[,Section[,Key]]
其中的参数与上述相同。
下面的示例代码创建带有两个值的子键,列出它们的值,然后删除子键并再次试图列出它们的值。
关于GetSetting函数和SaveSetting函数的一些说明
如果忽略GetSetting函数中的参数Default,则认为是一个零长字符串(”")。
参数Section可以是一个嵌套子键的路径,每个子键与其父键之间使用反斜杠隔开。例如,如果参数Section的值为Settings\Coordinates,则表明从HKEY_CURRENT_USER\Software\VB and VBA Program Settings\[AppName]\Settings\Coordinates中检索值。
SaveSetting函数不允许改变注册表项的缺省值,否则会产生运行时错误。
下面再看一个示例:
关于DeleteSetting函数的一些说明
不能使用DeleteSetting函数从注册表的主键里删除那些不是HKEY_CURRENT_USER\Software\VB and VBA Program Settings的子键的项。
如果提供了参数Key,那么只有名为Key的项及其关联的值被删除;如果忽略了参数Key,那么参数Section指定的子键将被删除;如果忽略了参数Section,那么参数AppName的键将被全部删除。
DeleteSetting函数不能删除属于任何键的缺省值。
下面再看一个示例,代码如下:
其中,使用GetAllSettings函数可以获取某应用程序的一系列键。该函数返回一个二维的Variant型数组,其第一维表示返回的设置,第二维则返回键名或键值。
HKEY_CURRENT_USER\Software\VB and VBA Program Settings
一、GetSetting
功能:从Windows 注册表中的应用程序项目返回注册表项设置值(从注册表读取数据)。
语法:GetSetting(appname, section, key[, default])
GetSetting 函数的语法具有下列命名参数:
appname 必要。字符串表达式,包含应用程序或工程的名称,要求这些应用程序或工程有注册表项设置。
section 必要。字符串表达式,包含区域名称,要求该区域有注册表项设置。
key 必要。字符串表达式,返回注册表项设置的名称。
default 可选。表达式,如果注册表项设置中没有设置值,则返回缺省值。如果省略,则 default 取值为长度为零的字符串 ("")。
说明:如果 GetSetting 的参数中的任何一项都不存在,则 GetSetting 返回 default 的值。
二、SaveSetting
功能:在 Windows 注册表中保存或建立应用程序项目(把信息写入注册表)。
语法:SaveSetting appname, section, key, setting
SaveSetting 语句的语法具有下列命名参数:
appname 必要。字符串表达式,包含应用程序或工程的名称,对这些应用程序或工程使用设置
section 必要。字符串表达式,包含区域名称,在该区域保存注册表项设置。
key 必要。字符串表达式,包含将要保存的注册表项设置的名称。
setting 必要。表达式,包含 key 的设置值。
SaveSetting 语句示例
下列示例首先使用 SaveSetting 语句来建立 Windows 注册区(或 16 位 Windows 平台的.ini 档)里 MyApp 应用程序的项目,然后使用 DeleteSetting 语句来将之删除。
' 在注册区中添加一些设置值。
SaveSetting appname := "MyApp", section := "Startup", _
key := "Top", setting := 75
SaveSetting "MyApp","Startup", "Left", 50
' 删除区段及所有的设置值。
DeleteSetting "MyApp", "Startup
可以使用注册表来存储应用程序的初始和配置的设置。VBA允许读写下列注册表路径中的注册表设置:
\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\{子键}
要在这个注册表路径中读取注册表设置,使用GetSetting函数。要写入注册表设置到该注册表路径中,使用SaveSetting函数。注意,不正确地修改注册表会导致严重的后果,甚至需要重新安装操作系统。
GetSetting函数和SaveSetting函数的语法如下:
SaveSetting(AppName,Section,Key,Setting)
GetSetting(AppName,Section,Key[,Default])
其中:
参数AppName必需,String类型,指定VB and VBA Program Settings键的子键;
参数Section必需,String类型,在参数AppName中指定的键的子键;
参数Key必需,String类型,在参数Section中指定的键的值;
参数Setting必需,String类型或数值型,存储在参数Key指定的值中的一块数据;
参数default可选,String类型,指定当参数Key中没有设置值时返回的数据。
使用DeleteSetting函数删除子键或值,其语法为:
DeleteSetting(AppName[,Section[,Key]]
其中的参数与上述相同。
下面的示例代码创建带有两个值的子键,列出它们的值,然后删除子键并再次试图列出它们的值。
'演示VBA SaveSetting函数和GetSetting函数的使用 Public Sub TestRegistryFunctions() '创建带有两个值的子键 SaveSetting AppName:="MyApp", Section:="MySection", _ Key:="MyKey", Setting:="MySetting" SaveSetting AppName:="MyApp", Section:="MySection", _ Key:="MyKey2", Setting:="MySetting2" '显示"MySetting"和"MySetting2" MsgBox Prompt:=GetSetting(AppName:="MyApp", _ Section:="MySection", Key:="MyKey") MsgBox Prompt:=GetSetting(AppName:="MyApp", _ Section:="MySection", Key:="MyKey2") '删除子键 DeleteSetting AppName:="MyApp" '显示空字符串 MsgBox Prompt:=GetSetting(AppName:="MyApp", _ Section:="MySection", Key:="MyKey") MsgBox Prompt:=GetSetting(AppName:="MyApp", _ Section:="MySection", Key:="MyKey2") End Sub
关于GetSetting函数和SaveSetting函数的一些说明
如果忽略GetSetting函数中的参数Default,则认为是一个零长字符串(”")。
参数Section可以是一个嵌套子键的路径,每个子键与其父键之间使用反斜杠隔开。例如,如果参数Section的值为Settings\Coordinates,则表明从HKEY_CURRENT_USER\Software\VB and VBA Program Settings\[AppName]\Settings\Coordinates中检索值。
SaveSetting函数不允许改变注册表项的缺省值,否则会产生运行时错误。
下面再看一个示例:
Sub TestTheReg() SaveSetting "MyRealGoodApp", _ "TestBranch\SomeSection\AnotherSection", _ "TestKey", "10" MsgBox "现在看看注册表" End Sub Sub TestDelete() If GetSetting("MyRealGoodApp", _ "TestBranch\SomeSection\AnotherSection", _ "") = "" Then DeleteSetting "MyRealGoodApp", _ "TestBranch\SomeSection\AnotherSection", _ "TestKey" MsgBox "再看看注册表" End If End Sub
关于DeleteSetting函数的一些说明
不能使用DeleteSetting函数从注册表的主键里删除那些不是HKEY_CURRENT_USER\Software\VB and VBA Program Settings的子键的项。
如果提供了参数Key,那么只有名为Key的项及其关联的值被删除;如果忽略了参数Key,那么参数Section指定的子键将被删除;如果忽略了参数Section,那么参数AppName的键将被全部删除。
DeleteSetting函数不能删除属于任何键的缺省值。
下面再看一个示例,代码如下:
Sub ExperimentWithRegistry() Dim vaKeys As Variant '创建新的注册表项 SaveSetting "XLTest", "General", "App_Name", "XLTest" SaveSetting "XLTest", "General", "App_Version", "1.0.0" SaveSetting "XLTest", "General", "App_Date", "10/11/2003" PrintRegistrySettings '更新设置 SaveSetting "XLTest", "General", "App_Version", "1.0.1" PrintRegistrySettings '获取所有的设置 vaKeys = GetAllSettings("XLTest", "General") PrintAllSettings vaKeys '删除设置 DeleteSetting "XLTest", "General", "App_Name" DeleteSetting "XLTest", "General", "App_Version" DeleteSetting "XLTest", "General", "App_Date" PrintRegistrySettings End Sub Sub PrintRegistrySettings() On Error Resume Next Debug.Print "应用程序名:" & _ GetSetting("XLTest", "General", "App_Name") Debug.Print "应用程序版本:" & _ GetSetting("XLTest", "General", "App_Version") Debug.Print "应用程序日期:" & _ GetSetting("XLTest", "General", "App_Date") Debug.Print "------------------------------" End Sub Sub PrintAllSettings(vaSettings As Variant) Dim nItem As Integer If IsArray(vaSettings) Then For nItem = 0 To UBound(vaSettings) Debug.Print vaSettings(nItem, 0) & ": " & _ vaSettings(nItem, 1) Next End If Debug.Print "------------------------------" End Sub
其中,使用GetAllSettings函数可以获取某应用程序的一系列键。该函数返回一个二维的Variant型数组,其第一维表示返回的设置,第二维则返回键名或键值。
相关文章推荐
- 如何使用组策略或注册表设置配置自动更新
- [转]Delphi 几个读写注册表的函数
- linux编程 fmemopen函数打开一个内存流 使用FILE指针进行读写访问
- [Linux流操作]使用fread和fwrite函数读写文件
- JAVA 中文件读写函数BufferedReader 和 BufferedWriter 的使用
- 第七篇:使用 fcntl 函数 获取,设置文件的状态标志
- 程序实现修改宏安全性设置-关于注册表的操作 (VBA)
- PHP 使用header函数设置HTTP头的示例解析 表头
- 使用GAMS的gdxxrw命令读写Excel时Cdim和Rdim的意义及设置
- php验证码函数 使用imagestring() imagefttext()设置字体大小
- VBA与T-SQL之间的函数比较;SQL Server的SQL语句如何在ACCESS中使用?(转自http://access911.net)
- 使用无缓冲IO函数读写文件
- 使用vba进行Word文档的数学格式设置
- php使用 readfile() 函数设置文件大小大小的方法
- ExpandableListView 使用及设置监听函数
- 分享关于JAVA 中使用Preferences读写注册表时要注意的地方
- JavaScript使用cookie,参数设置,说明;读取,写入,删除函数
- 使用 Microsoft.Win32.RegistryKey读写注册表
- JavaScript使用cookie,参数设置,说明;读取,写入,删除函数
- 如何修改使用 DocumentProperties() 函数的打印机设置