说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

HTML文档下载 WORD文档下载 PDF文档下载
VB用注册表保存数据(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"下面的所有内容。
ODBC中的同步与异步执行模式-Delphi资料 SQL编程常见问题-Delphi资料 第11章 中级SQL-Delphi资料 第10章 SQL基础-Delphi资料 SQL语句中的删除和改变-Delphi资料 TDataLink类别的说明-Delphi资料 TDBGrid控件中对多个记录的处理-Delphi资料 安装BDE需要的东东-Delphi资料 保存DBGrid中栏的字段名及尺寸-Delphi资料 动态生成定义数据库-Delphi资料 动态组成SQL速句-Delphi资料 多层C/S的客户端调用服务器端的方法-Delphi资料 关于dephi数据库的动态建立-Delphi资料 基 于WEB 的 数 据 库 查 询-Delphi资料 计算数据库某字段的值-Delphi资料 计算字段值-Delphi资料 建立应用软件注册安全机制-Delphi资料 建立自己的数据字典库-Delphi资料 将BLOB字段的BMP图显示出来-Delphi资料 将图像放入数据库中-Delphi资料 解 决sybase 用 户 数 据 库 不 能 进 入 故 障 的 一 种 方 法-Delphi资 解决sybase用户数据库不能进入故障的一种方法-Delphi资料 解决一个DBF表时的"Index not found.."错误-Delphi资料 精简Delphi数据库应用系统 精简Delphi数据库应用系统-定制BDE驱动程序 精简数据库应用系统-Delphi资料 开 发 基 于ORACLE7 数 据 库 的 管 理 信 息 系 统-Delphi资料 开 发AS/400 应 用 系 统: PB5 与Delphi3 的 比 较 利 用Delphi 开 发 响 应 用 户 输 入 的 数 据 库 查 询Web Server 程 利用Delphi开发响应用户输入的数据库查询Web Server程序 利用Tbatch组件完成数据批处理-Delphi资料 如何在网页上注册ACTIVEX控件 重新安装Win 2k,网卡不能正常使用? 金山影霸和超级解霸倍速问题? 初学JAVA问个简单的问题 问一个关于数据绑定的题目? 会弹钢琴的,请教一下 想一次清空表里面的所有字段的内容应该怎么写? 机子忽然死机后,不能正常工作。 如何调整内容的行间距 感谢大家热情的回答我的问题~~~ 支付方式和虚拟主机的问题 如何把编译的ACTIVEX插件加入到IE浏览器中! 如何获得目录下文件数目 50分,excel中同时打开多个工作表打印的问题! 怎么奇怪的问题都我碰上了?!纳闷ing!! ADO:知道字段的名字,怎样取得此字段的值类型。 请高手们帮忙解释一下,其实在AD中什么是Site(站点)呢? 【调查】这里有多少人喝酒的? 请问如何编写一个类似OFFICE里的ACTIVEX插件(ouactrl.ocx)一样的函数库! 敬请xp高手。 夜深了,好安静,工作还得继续,突然莫名的伤感,只想聊聊天 求助25道选择题!!!急!!!(在线等待) 关于2003年06月的《程序员》中的java设计模式 ShellListView的闪烁问题 问一个动态存储数据的问题~~ 急,散分求救,关于关键路径 急问!Instr()函数的含义及用法! 我真是很愤怒,我是广州连新路(即时广东省软考办)那里报名的,他们的工作水平真是低 一个头痛的问题:客户要求显示所有符合条件的字段和纪录,就是说,对于一张表,要可以让客户选他要看的字段,并且可以对所有字段进行查询 各位前辈请指教几个问题,我什么都不懂 『转帖』为什么要更换ID---好久没来,顺便散点分 请教: Weblogic牌号6。1下运行JSP程序附带标签库的问题? 求解过滤和统计问题,急用,谢谢! 凤凰是我的男朋友(淡月儿) 求解过滤和统计问题,急用,谢谢! 【社论】痛批妹妹,女人都是些什么东西,tmd 我真是是很气愤,我是在广州连新路(即使广东省软考办)那里报名的 为什么不能创建同义词,哪里错了??? 为什么不能创建同义词,哪里错了?????? 有关Dll中资源释放的问题 烦恼的问题,为什么服务器装了sql server package3之后,客户机都不能浏览网页了? 新手问题,字符串中如何传入字符 笔记本如何外挂光驱? 救命呀!!毕业论文摘要翻译 急! 关于读文件的一个小问题? 一个挺弱的问题 MVC的工具除了struts还有什么 我打算学习.Net,请大家帮忙给点好的初学入门的资料下载或者好的网址! 又是IE的小问题..以前没有遇见过!请指教! 关于子类调用父类构造器的问题 怎样用VC语句获取所有的打印机名称(如果机器上连有多台)? 求一片关于感恩的演讲比赛演讲稿,可以是感恩党的感恩社会的感恩父母的~ 我心中的鲁迅先生 作文400左右,最好不要一样的哦等半小时 求一篇英语作文关于课间十分钟的,不少于60词1:00之前要 草履虫的身上不可能出现的是 双休日,甲商场以“打九折”的措施优惠,乙商场以“满100送10元购物券”的开式促销.妈妈打算花掉500元,你以为妈妈在哪个商场买划算? 贫瘠;反义词是什么, 梯形的上、下底分别为3和8,一腰长为6,则另一腰长x的取值范围 双休日,甲商场以“打八折”的措施优惠,乙商场以“满100送20元购物券”的开式促销的形式促销王伯伯打算花掉500元,再( )商场购物合算一些?A.甲 B.乙 C.甲乙都可以 D.不确定 找反义词:荒芜()急忙()漂亮()满意() 已知3边求梯形另一腰长的取值范围 《朝花夕拾》里描写清末民初生活画面的文章有哪几篇? 巍巍中山陵课后习题2,解说示意图我要解说 英语小作文落款是在左还是右 小明把5个苹果放入一个棱长15厘米的正方体容器内,水面高了2厘米,把4个梨放入一个长20厘米,宽10厘米,高15厘米的长方体容器内,水面也升高了2厘米.梨和苹果哪个体积大?有奖赏哦 苏教版七上,巍巍中山陵,人民英雄永垂不朽,凡尔赛宫.书上练习答案. 请问2011考研英语小作文落款不是写的李明会是零分吗? 一个装有一定水的正方体容器,底面边长是2分米,放入一个苹果后,水面升高2厘米 巍巍中山陵看课后“探究与练习”第二题,将图标示清楚,并以解说员的身份,用简洁的语言把这幅图说清楚 蝉是什么动物?A杂食 B食草 C食肉 某商场打出促销活动"1元钱换2.5元购物券".某商品定价640元,问促销价是( )元?月考时就是这一道填空题让我丢了两分希望有人帮忙解答要过程和解释,是不是将一元当成2.5元然后直接用640/2.5就 如果有3分钟的时间演讲,大概要准备多少字的演讲稿呢? 刺猬是食肉性?食草性?还是杂食性动物? 商店促销一元可换二点五元购物券,一件衣服600元,促销时多少元 户籍所在地行政区划代码是什么意思? 小青读一本书,第一天读了18夜,第二天读的比总页数的40%少4页,两天共读了总页数的80%.这本书有多少页?6年级上册数学练习册84页的第6题.这题咋做?不好意思哈,字打错了,应该是18页. 以景开头并结尾属于什么结构?有什么好处? 演讲稿3分钟大约多少字 一本书,第一天读的页数与总页数的比是1:4,第二天读了40页,两天正好共读了总页数的2/3.这本书多少页? 《朝花夕拾》中哪两篇文章直接写作者当时的生活经历和思想变化的?按顺序写出篇名. 我要全国的行政区划代码 梯形的上下底长分别为7和20,腰长为3,则另一腰的取值范围 EXCEL 求某条件下top20的数据之和 求公式假设数据如下A 6 45.6 B 5 38.9 A 3 14.8 A 1 6.4 B 7 54.6A 13 28.6A 10 70.2那么第一列为A的 有1 3 4 6 7行,这5组数据中排名前三位的是1 6 7行,这三行中第三列的数据位45 第二天,库伯先生派人来,把奔驰汽车开走了.改成被字句改成被字句,急 已知梯形上下底的长分别是10和20,一腰长是5,则另一腰长a的取值范围是多少? 要在规定日期内加工一批产品,如果甲单独做,则比规定日期提前2天完成;如果乙单独做,则要超过4天期限,现在甲乙两人合作3天后,再由乙单独做,正好如期完成,问规定日期是多少天 巍巍中山陵全文七年级下册 求p(√2sin(x+π/4))=√2上一点到p=2cosθ上的最小值 古代文章落款写什么 贫瘠的反义词是( ) 换元法解方程组3/x+y+2/x-y=17/5 2/x+y-5/x-y=1 为什么人们在文章落款处总打上(PS:***)PS后面经常打上自己的名字或着备注只类的 什么的缩写 库伯派人把奔驰汽车开走后,虽然我们失去了( ),但是得到( ).是四年级下册《中彩那天》的文章的题目. 假设你是李华,向英语报社叙述最近在你有人学校踢足球,打破了玻璃,却没人敢承认.写英语作英语作文, 52张扑克牌,从中至少摸出多少张就能保证其中至少有一张是二(说明原因) 不要文字说明. 怎样给六岁小孩讲数学题 从点数为1,2,3,4,5的5张扑克牌中随机摸出两张牌,摸到的两张牌的点数之和为素数的概率是几? 2011年1——4月份有没有什么比较好的征文比赛? 抽屉里有2朵白花,3朵红花,要想拿到白花的机会占总数的3分之一,应当增加几朵红花? 谁知道防空征文怎摸写? 要1000字的. 感思9月征文 梯形上、下两底长分别为2和7,一腰长为3,则另一腰长x的取值范围是多少. 做梦钓3条桂鱼一条胖头鱼是什么意思 2011年9月天妃小学品读红色经典,书写精彩人生征文的要求. 观察到草履虫的食物泡是绿色的,其原因是什么 小方读一本书,第一天读了全书的十五分之二,第二天比第一天多读六页,这时已读的页数和剩下的页数比是3:7,这本书共有多少页? 求 百尺竿头,更进一步 的征文(作文) 生产棕榈油的过程中有什么污染?比如大气成分和废水主要成分? 鲁迅是个怎样的人 作文400字 课间十分钟英语作文60词 房子改变社会生态:大城市还能容下“穷新消法:回避“知假买假” “假一赔三玻利维亚一飞机降落时爆炸起火致8死1中国富豪接班大考:13位“富二代”谈法国支持韩国提出的“朝鲜半岛信任进程孟加拉国反对党再次举行连续三天的全国德国政府拒绝为斯诺登提供避难巴基斯坦西北部发生严重交通事故10人尼日利亚商贸中心大火得到控制 无中国两岸企业家紫金山峰会南京开幕新加坡政府提高警惕应对黑客威胁俄罗斯庆祝“人民团结日”日本一体育交流团体在朝开设代理事务所马来西亚绿色植物在国土面积中占74%缅甸政府首次与多支少数民族武装组织集马来西亚绿色植物在国土面积中占74%印度北部发生火车撞人事故造成4人死亡伊朗总统说对核谈前景不乐观南非一村落“自助打黑”烧杀6人中国驻坦使馆谴责不法分子走私象牙行为孙杨无证驾驶前长时间不归队 未经报告为厦门坚持问题导向点赞若心书屋:闹市中的一缕书香荷山村的红色往事提升计生管理服务工作水平福州便利店市场:狼来了吗?享受一届“不完美”的里约奥运这个研究院高精尖图片新闻“加入骨髓库,就等着救人那一天”少年长大对这种伎俩,回句呵呵就好微评天下离异后怎么办理房产证?动起来我省加快推进农业农村信息化全省英模子女夏令营开营直系亲属房子如何过户?翔安区强力推动主体责任落实上半年我省59个涉嫌污染案件稀土违法违规行为我省农村(含县)网店突破5万个
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘