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

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"下面的所有内容。
创建vpn服务器解决远程接入的问题 用JQuery插件轻松实现accordion折叠菜单 用VBA为EXCEL文件加个登录对话框 Android模拟器入门 Android GSM驱动模块详细分析 农行网上在线支付平台接口安装详解 Android开发中实现跨进程通讯的AIDL接口 用CSS样式展现可打印页面 Android搭建NDK开发环境 VC++、MFC最好的开源项目 Android中电话和短信服务的包分析 一位Android开发者的赚钱经历 让网页中的图片随屏幕滚动,并避免与文字重叠 Hello bat - DOS BAT批处理编程入门教程(一) 变量 - DOS BAT批处理编程入门教程(二) Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面 程序流程控制基础 - DOS BAT批处理编程入门教程(四) For循环语句详解 - DOS BAT批处理编程入门教程(五) Android编程之实现GPS定位 android编程实现仿iphone的tab效果 系统变量 - DOS BAT批处理编程入门教程(三) Android编程获取手机的IMEI Android开发中14个很有用的编程技巧 Android蓝牙栈bluez使用方法 Android模拟GPS数据生成kml和nmea文件 Android签名用keytool和jarsigner制作apk文件 谈谈Android中文短信的实现 Android中文短信开发技巧 Android来电号码获取代码 Android AIDL初学者必看内容 Android与XML解析 mysql ODBC ADO内存问题 两条裤裤了,散分庆祝了! 帮我找找错误 delphi新手问题多了请大家多多包含~ . .*^_^* 如何在库中以xml的行式读数据,又是如何以xml的行式提交的呢? 数据库表放在网络上另外一台机上,如何读取 哪里有Microsoft认证的培训教材(中文电子版)阿???谢谢大虾!!! 在DELPHI5中有否一个组件,可以制作出类似于OBJECT INSPECTOR的东西 谁有vgabios.exe的下载地址?????????????????????? delphi数据库编程的一个问题 怎样在新开的页面给已开的页面上的一个TextBox插入新的字符串 SqlServer 中数据库如何加密?谢谢大家了。 向一个CEDIT里写消息,出RUN TIME 错误 SqlServer 中数据库如何加密?谢谢大家了。 来新问题了,找代码错误。 数据量特大,如何保证其查询的性能?急!! 如何在OpenGL贴上图片材质? 怎样在ie中内嵌rm 或 media player 播放器 大家在编写JSP时,是在什么软件里编写的? 紧急求教:order by 有关日期时间类型。 数据库冲突问题 请教ComboBox的使用问题 请问怎么定义一个全局的变量,工程中所有的.cpp文件都可以访问? 一个人可以同时爱两个人吗? 怎么自动启动postgres数据库服务? 谁有已破解的IOCOMP的Instrumentation Pack Pro组件包,For C++builder 6.最好是3.0版 修改表里面的内容的命令。 一个数据查询的算法优化问题求助? 我想考中程,但手上只有高程教材资料,看看有用吗???? 调用SQL存储后有参数返回,应该怎么赋值? url中要传送一个变量的值,如何获取,急急!! 两个调试问题: *.inc是什么文件 WCHAR 转成 CString ?? 局域网中DELPHI通过myoledb如何联接其他机器中的mysql?在线等待!! 一个数据查询的算法优化问题求助? ****为什么没人为我解答呀???? 怎样将一幅不是很大的bmp图片放进数据库中 如何使datagrid不出现新增行? 一个数据查询的算法优化问题求助? 刚看了一部影片!很受感动!散分!!!!!!!!!!!!! 化简逻辑函数的方法(一定给分) 控件的隐藏?? 要保存用户留言的日期和时间,在Access2000数据库中用什么数据类型好呢,那insert into又怎么写呢?now()函数得出的值中有空格和冒号,会 为此问题郁闷了好久,望高手们指点!小生在此谢谢了! 请各位大哥教我 求购VB中发传真的控件(在线等) 请问什么是正则表达式?哪位给介绍一下 select控件的隐藏属性?? 显示控件 绿色木质茎 叶片边缘发白 叶片褶皱 是什么植物太阳一晒页边缘白色变成粉红色 小鱼和小鱼什么关系(生物学) 长江和黄河是大气降水还是冰雪融水 鱼在生态瓶里一分钟内水多时浮上来多还是在水少的时候浮上来的次数多 青藏高原的范围?具体范围,跨越哪几个省? 长江和黄河的源头各是冰雪融水还是大气降水 减少一半生态瓶中的水,瓶中的小鱼一分钟浮出水面的次数会怎么样?科学练习册里的问题:减少一半生态瓶中的水,瓶中的小鱼一分钟浮出水面的次数会( ).A.不变 B.减少 C.增多 浓度,体积相同的CH3COO 跟CH3COONa混合后,求其物料守恒 我养了六条小鱼 回到家里用了饮水机里面的矿泉水养,为什么到了晚上小鱼儿就贴近水面呼吸………难道这种我养了六条小鱼 回到家里用了饮水机里面的矿泉水养,为什么到了晚上小鱼儿就贴 下列河流没有结冰期的是A辽河 B黄河C黑龙江D珠江 用什么酸来调节废水的pH 小鱼能在水里呼吸吗 什么河不结冰 设0 小鱼儿是怎么呼吸的? 什么植物?叶片上面是绿色的叶片下面是暗红色的?有毛叶片上面是绿的下面是暗红色叶片卷曲下有长茎大概是如此…… 设0 阴天的时候,小鱼是不是要在水面呼吸? 给歌曲写20—50字的简单串词这里有30多首歌曲,是广播播音时要用的,要求每首歌有一点点简介歌名1.童年——张艾嘉2.外婆的澎湖湾——潘安邦3.乡间的小路——张明敏4.三月里的小雨——刘文 1.山羊跑得快.2.西瓜真甜!扩句 自感线圈是什么?可以理解成小弹簧吗?自感线圈能感知的最小电流是多少? 如图所示,圆形区域内有垂直于纸面的匀强磁场,三个质量和电荷量都相同的带电粒子a,b,c,以不同速率对准圆心O沿着AO方向射入磁场,其运动轨迹如图,若带电粒子只受磁场力作用,则下列说法正 设0 已知函数f(x)=x^2+2mx+9的最小值为5求实数m的值 以地球人的身份给外星人介绍地球的作文题目怎么写 1.在一个底面直径是9cm的圆柱形的容器中装着一些水,把浸没在水里的一个底面半径为3厘米的圆锥形铅块拉出来,水面下降了1厘米,这个圆锥形铅块的高是多少厘米?2.如果3.6:x=3分之1:2.2,则x=( 已知函数f(x)=x+2mx+9的最小值为5,求实数m的值 谁可以帮我写一下歌曲串烧的串词船歌、我相信、我爱这蓝色的海洋、万水千山总是情、幸福万年长、相亲相爱6首歌的串烧,每首歌只唱一段的,就是在这个节目之前的介绍词,最好能把歌名都 在一个底面半径是6厘米的圆柱形容器中装一部分水,水中浸没着一个底面半径为2厘米的圆锥形铁块容器中的水面上升了1.5厘米,求圆锥的高.要口头算式) 孔雀小鱼苗,总浮在水面上.小鱼苗刚出生不几天,四十多条小鱼,养在一个高十厘米,直径约十厘米的圆柱玻璃饼里,里头有一小段水草.几乎都在水面上浮着.睡我也一定程度的交换入新水.偶尔会 想了解坦桑尼亚最近的情况近期可能要去坦桑尼亚 ,不知道那里现在的状况.有人说可以,有人说现在反华 挺可怕的,希望近期有回来和在坦桑尼亚的朋友说说 致接力赛:运动员致接力赛运动员发言稿.短的. 把一块体积为120立方厘米的铅块,浸没在长6厘米,宽5厘米,高18厘米的长方体容器中,这时水面的高度为13厘米.如果把这块铅块从水中捞出,水面高度是多少厘米 哪些品牌有买坦桑石知道enzo有买坦桑石的,想知道还有哪些品牌有卖坦桑石? 王师傅要用一块边长为50厘米的正方形铁皮做一个圆形水桶底,这个水桶的底面积最大是多少? 何夜无月?何处无竹柏?( ) 坦桑尼亚的官方首都是?1 多多玛2 达雷斯萨拉姆3 亚的斯亚贝巴 小明的爸爸要做一个圆底小水桶,从一块边长4分米的正方形铁皮上剪下一个最大的圆.剩下占原正方形面积的百分之几? 黄河水主要补给来源是降水,还是雪融补给?讲讲. 国内坦桑石的价格 一块长方形铁皮,用它做一个圆柱形水桶的侧面,现在要配上一块正方形的铁皮做水桶的底?,求正方形面积?长6.28dm ,宽不知 黄河中.下游补给水源是什么...如同上游补给水源主要是高山冰雪融水...中下游是. 请你设计一个小实验,说明升华和凝华的存在 阴影部分面积为2平方厘米 等腰直角三角形的面积为多少? 伏尔加河沟通了什么?欧洲东部的三大河流的凌汛的主要的季节. 玻化微珠保温砂浆施工是否可以加防冻剂或早强剂有副作用吗?你们那是哪个地方啊?同时,掺加比例是多少 作文《我心中的风景》选材,立意选材立意要新颖, 我家在梅州,今晚的英仙座流星雨我能看到吗?如果能,最佳时间是什么时候?观测英仙座流星雨方位又哪里? 开放什么组词 作文:《我心中的歌》取材与立意 2010年梅州看得到英仙座流星雨嘛?一定要梅州的呐! HCl与NaCl的混合溶液在蒸发结晶时,HCl会变成气体吗?即蒸发结晶后,得到的晶体是不是纯净的Nacl,而没有HCl的干扰? 青藏高原对亚洲水系有何影响?如题 坦桑尼亚多多马地区的生活是怎样的? 叶片中间绿 边缘白 ,这是什么植物?求解 生物中小鱼和小鱼之间的关系是什么? 轮胎的分类及其特性是? 除去食盐中的碘,常用方法是?A蒸发B结晶C过滤D升华能够证明HCL时共价化合物的是?A易溶于水B液态易导电C...除去食盐中的碘,常用方法是?A蒸发B结晶C过滤D升华能够证明HCL时共价化合物的是?A易 在生态瓶内有小鱼,小虾,小螺邓生物,还有一些绿色植物,你知道他们各自有什么作用吗 轮胎具有人的那些“品质”我在写一个仿写句子呢 太阳系外发现一颗类似地球的行星(图)研究发现:SARS类病毒或由蝙蝠直接印尼强烈抗议美国监听 要求美国政府作英国脱离欧盟将导致苏格兰独立纽约买烟最低年龄提高到21岁洪航勇任杭州市人大常委会代理主任(图美辱华主持人回应华人起诉:他们愿浪费国际刑事法院推迟审理肯尼亚总统案美国航班飞行中将允许使用部分电子设备10月份国际大事回顾:美联邦政府关门奥巴马喊话投资者“选择美国”摄像师探寻日本平凡之美东京博物馆特别展 揭秘日本封建末期神万圣节狂欢化装派对 萌“小鬼”们惹人多伦多市长涉吸毒视频被查获 其友涉嫌西班牙走出两年经济衰退 首次出现经济巴黎街头上演真人版浴室广告 女演员穿美墨边境发现新贩毒地道 配电力轨道和约旦河西岸推进环保 巴以或实现“环境俄罗斯富人与穷人代名词:寡头、工薪族英媒窃听案中两名涉案编辑被传系恋人关现在看还来得及!没钱过年怎么办?!台北一盗窃惯犯从派出所溜走 失职警察长春南关区环卫之家给环卫工人带来温暖吉报大家谈:党报应成为党员干部的必备清水缘于“一条龙”吉林省手机摄影大赛“吉聚温暖”活动启特殊考核“聚焦民生”政协委员和专家学者为社区珲春特殊教育学校教师纪云玲:无声世界戈蒂耶·卡普松:用笑容融化你,用琴声长沙首家获3000万众筹的果蔬包点开深夜爆尿 | 当红小鲜肉得罪国师,都打啵儿 | 杨紫苞米地里被强吻,又一曝香港归化球员加盟权健,战国足表现出当年纳粹海报男孩晒与希特勒合影:罕见机构超亿元净流入,周五挖掘5只黑马股稷下的学院世外之地普通难度三星通关攻特斯拉马斯克:每次都知难而退,永远在通用计算的前世今生与未来:将定律装进世界人民的两大央妈10年前的今天梅西国家德比首秀
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘