转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
用注册表保存数据 (VB函数篇)         ★★★★

用注册表保存数据 (VB函数篇)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:758 更新时间:2009/4/23 16:39:43

 

 

用注册表保存数据(VB函数篇) 

作 者 : 扬眉



   简介 

   注册表最开始是出现在Windows 3.x,是用来为OLE保存数据的。那时Windows和其应用程序的设置值大多都
保存在各不相同的.INI文件中。例如我们最为熟悉的System.ini和Win.ini就是这样的文件。当软件越安越多,
这种文件也越来越多,而且遍布硬盘的各个角落。既不便于管理,也浪费了很多磁盘空间(因为这些文件大多都很小)。 

   当Windows 95推出的时候,注册表应运而生。所有的设置值,不论是系统的,还是应用程序的,
都被保存在一个树型结构的数据库中。这样确实方便了不少,而且对多用户环境提供了更好的支持。而对程序员而言就麻烦了一些,
必须了解的是注册表的结构,又因为注册表不再是单一的文本文件,所以必须用专门函数来操作注册表。 

   注册表(Registry)是保存程序运行参数和用户设置的最佳地方。听过了太多的告诫,编辑注册表对很多人来
说似乎是一件神秘而复杂的事,但在VB中,通过四个注册表函数,一切都变得简单起来。 

   如果你对注册表有一些了解,那么应该知道注册表的结构和我们所熟悉的文件系统的结构是一样的,都是树型结构。
用主键来代替目录以划分各种不同的信息。在主键下面还可以有子主键和三种不同类型的键值。每个键值可以是字符串,
二进制值或者双字值中的一种。Visual Basic 提供了一个标准的注册位置(主键)以存储创建于 Visual Basic 
的应用程序的程序信息:   HKEY_CURRENT_USER\Software\VB and VBA Program Settings\ 

   下面的所有函数所读写的注册表路径都是以这个路径为根的相对位置。 

   SaveSetting 

   这个函数用来向注册表数据库写入一些数据 

   SaveSetting appname, section, key, setting 

   appname 

   在向注册表写入数据之前,你必须计划好一个用在整个应用程序中的appname 。可以把注册表的内容比作一台计算机,
那么appname就是驱动器。它必须是一个字符串,也可以用数字,不过要用CStr 函数把它转换成字符串格式。
事实上它代表的是应用程序或工程的名称。一般来说,appname在整个应用程序中应该保持不便。 

   section 

   section可以说是这个模型中的目录,就向一台计算机上的目录一样。它用来把设置分类,可以包含Key或者子section。
如果给它传递vbNullChar 这个值的话,就表示要操作的键是在根目录下的,也就是在appname下面的。 

   key 

   相当于一个文件名。 

   setting 

   它代表文件中的信息,可以是一个数字或者字符串。 

   执行完后,在注册表的HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\"主键下面
的名为“key”的键将被赋值为“setting”,
如果相应的主键或者键名不存在,将会被创建。 

   GetSetting 

   这个函数用来从注册表中提取数据。 

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

   Appname,section和key的含义和上面的一样。 

   default 

   如果Visual Basic没有找到指定的键,函数将返回参数default中得值。这个参数是可选的,但是对错误情况的处理很方便。
如果没有选用这个参数,
而指定的键的名称不存在,函数将返回一个长度为0的字符串。 

   下面看看例子: 
SaveSetting "Logon Master", "Users\User0", _
"Name", "John"
注释:这将把数据"John"储存到注册表的 "Logon Master\Users\User0\Name" 
注释:不过这是相对路径,相对于一个根 

Debug.Print GetSetting("Logon Master", _
"Users\User0", "Name", "Anonymous"
注释:这将显示"John"

Debug.Print GetSetting("Logon Master", _
"Users\User1", "Name", "Anonymous"
注释:这次显示的将是"Anonymous",因为在 
注释:"Logon Master\Users\User1\Name"没有预先储存值。
GetAllSettings



   这个函数用来提取某个目录(主键)下面的所有文件(子键)。 

   GetAllSettings(appname, section) 

   参数的含义和其他的函数都是一样的。但这个函数和其他几个比起来更为复杂。他返回的的是一个2维字符串数组,
包含了所有的子键名称和乡音的子键值。看看下面这个例子,你很容易的就能搞清楚: 
注释: 定义一个Variant类型的变量来保存GetAllSettings返回的二维数组

注释: Interger类型值用来计数
Dim MySettings As Variant, intSettings As Integer

注释:先在注册表中填入一些值
SaveSetting "Logon Master", "Users\User0", _
"Name", "John"
SaveSetting "Logon Master", "Users\User0", _
"Priviledges", "Supervisor"

注释:提取预先设定的数据
MySettings = GetAllSettings("Logon Master", _
"Users\User0")

注释:显示出来
For intSettings = LBound(MySettings, 1) _
To UBound(MySettings, 1)

注释:MySettings(x,0)中包含的是键名,
注释:而MySettings(x,1) 中包含的是键值
Debug.Print MySettings(intSettings, 0), _
MySettings(intSettings, 1)
Next intSettings



   注意:GetAllSettings并不返回目录名,只是返回键名和相应的键值。 

   DeleteSetting 

   除了保存和提取数据,我们还要能够删除注册表中的注册项。这就要用到DeleteSetting函数了。 

   DeleteSetting appname[, section[, key]] 

   这个函数用来删除主键或者键。如果要删除的是键,要给出它所在的键名。如果要删除的是主键,
这它下面所有的键和子主键都会被删除。如果你要删除应用程序所有的注册表信息,就只用指定appname就可以了。 

   例如:
DeleteSetting "Logon Master", "Users\User0", "Name"
注释:这将删除Name键。
DeleteSetting "Logon Master", "Users"
注释:这将删除"Logon Master\Users"主键和其下的所有内容。
DeleteSetting "Logon Master"
注释:这将删除应用程序"Logon Master"下面的所有内容。


[VB.NET程序]Split 函数应用示例 ( VBScript版本 )  [VB.NET程序]XML 简单接口 (SAX2)用Visual Basic 实现的示例
[电脑应用]关于头发的画法 (painter+压感笔)  [Sql Server]SQL Server 2000 (SP4)笔记整理(一):数据库
[Sql Server]SQL Server 2000 (SP4)笔记整理(二):数据库表  [Sql Server]SQL Server 2000 (SP4)笔记整理(三):触发器
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台