VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 用VB函数轻松访问系统注册表
发表评论(0)作者:新疆 王卫, 平台:VB6.0+Win98, 阅读:10170, 日期:2000-11-08

    注册表在Windows 9x中的作用是不言而喻的,它除了保存操作系统自身的软件、硬件及环境信息外,一个重要的用途就是保存应用程序中允许用户定制修改的配置信息。     在Visual Basic应用程序中,有两种访问系统注册表的方法:一种是使用VB自带的注册表函数,另一种则是使用Windows API函数,这两种方法各有优缺点,前者功能简单但容易使用,后者则功能强大但使用相对复杂一些,本文给大家介绍用VB自带的函数访问系统注册表的方法。     一、用VB函数访问注册表的方法

    在VB5.0中自带的注册表函数(命令)共有4条,分别是SaveSetting、GetSetting、GetAllSettings和DeleteSetting,下面是四个函数的详细用法:     1?SaveSetting appname, section, key, setting     appname 应用程序或工程的名称

   section 注册表区域名称,在该区域保存注册表项设置

    key 要修改的注册表项的名称

     setting key的设置值

    SaveSetting的功能是在注册表中指定应用程序的区域中为某注册表项赋值,如果指定的应用程序名、区域名或注册表项不存在,则先建立再赋值。可以利用这条命令建立某个注册表项或修改注册表项的值。     如命令SaveSetting ″MyApp″, ″Option″, ″MyValue″, 1的功能是将程序TestApp的Option区中MyValue表项的值赋为1,如果MyValue不存在则先建立该表项再赋值为1。     2?GetSetting(appname, section, key[, default])      appname 应用程序或工程的名称

     section 区域名称

     key 注册表项名称

     default  key的缺省值,为可选参数

    GetSetting的功能是从注册表中的应用程序指定区域中返回某注册表项的设置值,如果 GetSetting 的参数中的任何一项在注册表中都不存在,或key没有赋值(即=″″)时,则返回default指定的值。     如代码Value=GetSetting(″MyApp″, ″Option″, ″MyValue″)可以获取程序TestApp的Option区中MyValue表项的值。     3?GetAllSettings(appname, section)      appname 应用程序或工程的名称

    section 区域名称

    GetAllSettings函数返回Variant型数据,其内容为字符串的二维数组,该二维数组包含指定区域中的所有注册表项设置及其对应值。如果指定的appname或section不存在,则返回未初始化的Variant。     如命令MySettings=GetAllSettings(″MyApp″, ″Option″)可获取Option下所有注册表项的名称和取值,并将结果保存在变体型数据MySettings中。     4?DeleteSetting appname[, section[, key] ]      appname 应用程序或工程的名称

     section 要删除注册表项设置的区域名称,为可选参数

     key   要删除的注册表项,为可选参数

    DeleteSetting命令在注册表中,删除应用程序信息、区域或注册表项。当只提供appname参数时,将删除appname指定的应用程序的所有信息,如果提供了appname和section参数,则删除section指定的区域,如果提供了所有参数,则删除指定的注册表项设置。     如果指定的应用程序、区域或注册表项不存在,DeleteSetting将不做任何事情。     如:DeleteSetting ″MyApp″将删除MyApp应用程序保存的全部信息。     二、程序实例

    下面以一个简单的实例说明四个函数的使用。

    新建工程,在Form1上放置两个标签,Caption属性分别为“姓名”和“公司”;两个文本框txtName和txtCompany,Text属性均设为空;三个命令按钮cmdSave、cmdFind和cmdDelete,Caption分别设为“保存”、“查看”和“删除”,窗体布局如图1。     给三个命令按钮添加如下代码:

    Private Sub cmdSave_Click()

     ′将两个文本框中的内容分别赋给MyApp下User区中Name和Company      SaveSetting ″MyApp″, ″User″, ″Name″, txtName      SaveSetting ″MyApp″, ″User″, ″Company″, txtCompany      MsgBox ″您的信息已成功保存!″

    End Sub

    Private Sub cmdFind_Click()

    ′查找MyApp下User区中Name和Company的设置值并显示      MsgBox ″您的姓名是:″ & GetSetting(″MyApp″, ″User″, ″Name″) & Chr(13) & Chr(10) & ″您的公司是:″ & GetSetting(″MyApp″, ″User″, ″Company″)     End Sub

    Private Sub cmdDelete_Click()

     ′删除MyApp下的User区域及其下的所有注册表项      DeleteSetting ″MyApp″, ″User″     End Sub

    运行程序,在图窗口中输入姓名和公司名称,之后按“保存”按钮,然后再按“查找”,可以看到显示出了正确的结果(图2),说明保存和查找操作都已正常进行。如果在保存之前或删除之后按“查找”按钮,则出现右图3对话框,说明要找的注册表项不存在。     使用上面介绍的四个函数(命令),我们可以非常容易地在VB代码中访问系统注册表。但有一点比较遗憾,VB的这几个函数只能在系统注册表的固定位置进行工作,即只能在\KEY_CURRENT_USER\Software\VB and VBA Program Settings下完成建立、修改和删除操作,当然这个限制对于一般的应用程序无关大局,但对较大的应用程序就会造成一些不便,这时我们就需要借助于Windows API函数。