快速业务通道

C++Builder注册表编程实例详解

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
键值的数据。

如: WriteString(- 我的串 -,- 内容 -); 其它类型的键值(二进制值、 Dword 值)的读取和写入函数如 WriteInteger 、 WriteBool() 、 WriteFloat() 、 WriteDateTome() 、 WriteBinaryData() 等用法与上述类似。

(9) 判断键值或主键是否存在的函数:

bool __fastcall ValueExists( 键值名 );

这个方法判断当前键下是否存在指定的数据项,如果存在返回 true ,否则返回 false 。

bool __fastcall KeyExists( 主键名 );

这个方法判断一个键是否存在,如果存在返回 true ,否则返回 false 。

(10)从文件读入键值函数:

LoadKey( 键值名 , 文件名 ) ;

(11)一个键值保存到文件函数:

SaveKey( 键值名 , 文件名 ) ;

(12) 关闭键值函数:

void __fastcall CloseKey(void);

在注册表使用完毕后,应当及时调用 CloseKey() 成员函数关闭注册表,并调用 delete 方法将用 new 申请的内存空间释放。

(13)当前主键下子键值的获取函数:

void __fastcall GetKeyNames(Classes::TStrings * Strings) ;

我们可以用该成员函数得到当前主键下所有子键的名称,用 GetKeyInfo 得到更加详细的信息。必须指出,虽然 GetKeyNames() 的说明成 void __fastcall GetKeyNames(Classes::TStrings * Strings) ,也就是说,它的参数类型是 TString ,但是我们并不能首先声明一个 TString 类的实例,然后将它作为参数用于 GetKeyNames() 。这主要是由于 TStrings 类含有抽象成分。我们的解决方法是采用 TStrings 类的派生类 TStringList 来代替 TStrings 声明一个实例,并作为参数用于 GetKeyNames() 函数。

在获得子键的名称后,我们就可以利用有关函数进一步确定详细信息。如用我们可以用 GetValueNames() 结合 Read() 和 Write() 获得主键的值的详细信息。请看下面实例,这个例子的功能是将“ \Software\MyInfo”主键下的所有子键名称显示在 ComboBox1 中:

# include
…………
Tregistry * curReg=new TRegistry () ;
curReg - >OpenKey( “ Software\\MyInfo-,true);
KeyNames=new TStringList();// 注意 TstirngList 类的声明方法!
curReg - >GetKeyNames(KeyNames); for(int i=0;iCount;i ++ ) ComboBox1 - >Items - >Add(KeyNames - >Strings[i]);
curReg - >CloseKey();
delete KeyNames;

3 使用 TRegistry 的一般步骤

一般来说,有以下四步操作:

1) 建立 TRegistry 类。 2) 利用 OpenKey() 方法打开一个键值。 3) 用 ReadType() 和 WriteType() 读写键值。 4) 调用 CloseKey ()关闭一个键值,最后调用 delete 方法将用 new 申请的内存空间释放。

二、应用实例1

下面我们通过一个示例程序演示了对注册表的常见操作,包括打开主键、读取不同类型的键值、删除键值或主键等。“每次启动电脑自动运行”复选框则实现的作用类似 Win 95 的 Welcome.exe 程序的功能。

首先在窗体添加 Edit1 、 Label1 、 label 2 (用于显示运行次数)、 Button1 、 CheckBox1 ( Caption= “每次启动电脑自动运行”)等几个控件,然后添加以下源代码。生成可执行文件后,改名为 MyReg.EXE 拷贝到 C: 盘根目录下执行即可。

源代码:

//--------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include -registry.hpp- // 包含头文件
#include -Unit1.h-
//--------------------------------------------
#pragma package(smart_init)
#pragma resource -*.dfm-
TForm1 *Form1;
TRegistry *MyReg=new TRegistry();// 建立实例
//--------------------------------------------
__fastcall TForm1::TForm1(TComponen

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号