linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > Delphi >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·HexToStr函数和StrToHex函数
·Delphi中的进制转换
·delphi轻松设置无边框透明窗体
·delphi第三方控件安装(Ehlib)
·DELPHI组件安装全攻略
·delphi动态创建控件
·开发工具比较Visual C++ VS De
·delphi完整身份证效验程序实例
·delphi中的Format函数详解
·delphi编程获取打印机的打印任
·如何判断文本文件的编码格式
·深入研究Variant数组
·用delphi编写网络游戏的外挂
·Delphi技巧-用户自定义数据类型
·delphi设置控件透明
最新文章
·在应用程序中跟踪MOUSE的坐标
·压缩和修复MS Access 2000文件
·DELPHI 6.0 动画制做
·怎样在Delphi中调用LastError信
·怎样得到主域服务器名称
·怎样利用递归实现删除某一目录
·读出主键下所有项
·如何制作照片底片效果的图像(
·获得Modem的状态
·WebBrowser屏幕滚动的实现,设
·有关字符串处理的小技巧
·Delphi建立键盘鼠标动作纪录与
·Delphi中布尔类型辨析
·DELPHI程序注册码设计
·图形的不规则的Copy
Google
 
在Delphi程序中操作注册表
[ 作者:  加入时间:2007-10-08 15:48:41  来自:Linux联盟收集整理 ]
32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。 cFpLinux联盟
  一、创建和释放TRegistry对象cFpLinux联盟
  1.创建TRegistry对象。为了操作注册表,要创建一个TRegistry对象:ARegistry := TRegistry.Create;cFpLinux联盟
  2.释放TRegistry对象。对注册表操作结束后,应释放TRegistry对象所占内存:ARegistry.Destroy。cFpLinux联盟
cFpLinux联盟
  二、指定要操作的键cFpLinux联盟
  操作注册表时,首先应指定操作的主键:先给属性RootKey赋值以指定根键,然后用方法OpenKey来指定要操作的主键名。cFpLinux联盟
  1.指定根键(RootKey)。cFpLinux联盟
  根键是注册表的入口,也注册表信息的分类,其值可为:cFpLinux联盟
  HKEY-CLASSES-ROOT:存储整个系统对象类信息,如ActiveX对象注册、文件关联等信息。cFpLinux联盟
  HKEY-CURRENT-USER:存储当前用户的配置信息。为属性RootKey的默认值。cFpLinux联盟
  HKEY-LOCAL-MACHINE:存储当前系统的软硬件配置信息。应用程序自己的信息可以存储在该根键下。cFpLinux联盟
  HKEY-USERS:存储所有用户通用的配置信息。cFpLinux联盟
  还可以是HKEY-CURRENT-CONFIG、HKEY-DYN-DATA。cFpLinux联盟
  2.指定要操作的主键。cFpLinux联盟
  Function OpenKey(const Key: string; CanCreate: Boolean): Boolean;cFpLinux联盟
  Key:主键名,是键名全名中除去根键的部分,如Software。cFpLinux联盟
  CanCreate:在指定的主键名不存在时,是否允许创建该主键,True表示允许。cFpLinux联盟
  返回值True表示操作成功。cFpLinux联盟
  3.关闭当前主键。cFpLinux联盟
  在读取或存储信息之后,应及时将关闭当前主键:procedure CloseKey。cFpLinux联盟
cFpLinux联盟
  三、从注册表中读取信息cFpLinux联盟
  Read系列方法从注册表读取指定的信息(字符串、二进制和十六进制),并转换为指定的类型。cFpLinux联盟
  1.Read系列方法。cFpLinux联盟
  function ReadString(const Name: string): string;cFpLinux联盟
  读取一个字符串值,Name为字符串名称。cFpLinux联盟
  function ReadInteger(const Name: string): Integer;cFpLinux联盟
  读取一个整数值,Name为整数名称。cFpLinux联盟
  function ReadBinaryData(const Name: string; var Buffer; BufSize: Integer):Integer;cFpLinux联盟
  读取二进制值,Name为二进制值名称,Buffer为接收缓冲区,BufSize为缓冲区大小,返回为实际读取的字节数。cFpLinux联盟
  其它方法还有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。cFpLinux联盟
  2.读取信息一例(显示Windows的版本)。cFpLinux联盟
  在HKEY-LOCAL-MACHINE下,有三个字符串值Version、VersionNumber和SubVersionNumber,用于记录当前Windows的版本号。cFpLinux联盟
  {请在Uses中包含Registry单元}cFpLinux联盟
  procedure TForm1.Button1Click(Sender:TObject);cFpLinux联盟
  varcFpLinux联盟
   ARegistry : TRegistry;cFpLinux联盟
  begincFpLinux联盟
   ARegistry := TRegistry.Create;cFpLinux联盟
  //建立一个TRegistry实例cFpLinux联盟
   with ARegistry docFpLinux联盟
   begincFpLinux联盟
   RootKey := HKEY-LOCAL-MACHINE;//指定根键为HKEY-LOCAL-MACHINEcFpLinux联盟
   //打开主键SoftwarecFpLinux联盟
   if OpenKey( ′Software′,false ) thencFpLinux联盟
   begincFpLinux联盟
   memo1.lines.add('Windows版本:′+ ReadString(′Version′));cFpLinux联盟
   memo1.lines.add('Windows版本号:′ + ReadString(′VersionNumber′));cFpLinux联盟
   memo1.lines.add(′Windows子版本号:′ + ReadString(′SubVersionNumber′));cFpLinux联盟
   end;cFpLinux联盟
   CloseKey;//关闭主键cFpLinux联盟
   Destroy;//释放内存cFpLinux联盟
   end;cFpLinux联盟
  end;cFpLinux联盟
cFpLinux联盟
  四、向注册表中写入信息cFpLinux联盟
  Write系列方法将信息转化为指定的类型,并写入注册表。cFpLinux联盟
  1.Write系列方法。cFpLinux联盟
  procedure WriteString(const Name, value: string);cFpLinux联盟
  写入一个字符串值,Name为字符串的名称,value为字符串值。cFpLinux联盟
  procedure WriteInteger(const Name: string; value: Integer);cFpLinux联盟
  写入一个整数值。cFpLinux联盟
  procedure WriteBinaryData(const Name: string; var Buffer; BufSize: Integer);cFpLinux联盟
  写入二进制值,Name为二进制值的名称,Buffer为包含二进制值的缓冲区,BufSize为缓冲区大小。cFpLinux联盟
  其它方法还有:WriteBool、WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。cFpLinux联盟
  2.写入信息一例。cFpLinux联盟
  下面程序使Delphi随Windows启动而自动运行。cFpLinux联盟
  varcFpLinux联盟
   ARegistry : TRegistry;cFpLinux联盟
  begincFpLinux联盟
   ARegistry := TRegistry.Create;cFpLinux联盟
  //建立一个TRegistry实例cFpLinux联盟
   with ARegistry docFpLinux联盟
   begincFpLinux联盟
   RootKey:=HKEY-LOCAL-MACHINE;cFpLinux联盟
   if OpenKey(′Software′,True) thencFpLinux联盟
   WriteString(′delphi′,′C:Files.exe′);cFpLinux联盟
   CloseKey;cFpLinux联盟
   Destroy;cFpLinux联盟
   end;cFpLinux联盟
  end;cFpLinux联盟
cFpLinux联盟
  五、键值维护cFpLinux联盟
  除了在注册表中读取、存储外,程序可能还需要增加主键、删除主键、主键改名、数据值改名等。cFpLinux联盟
  1.创建新主键:function CreateKey(const Key: string): Boolean。cFpLinux联盟
  Key即为主键名,返回值True表示操作成功。cFpLinux联盟
  2.删除主键:function DeleteKey(const Key: string): Boolean。cFpLinux联盟
  Key即为主键名,返回值True表示操作成功。cFpLinux联盟
  3.复制或移动主键:procedure MoveKey(const OldName, NewName: string; Delete: Boolean)。cFpLinux联盟
  OldName、NewName分别表示源主键名和目标主键名;Delete表示是否删除源主键,True表示删除,False表示保留。cFpLinux联盟
  复制或移动一个主键将复制或移动该子键下的所有数据值和子键内容。cFpLinux联盟
  4.判断指定主键是否存在,其下是否有主键,并获取主键名称。cFpLinux联盟
  KeyExists用于判断指定主键是否存在:cFpLinux联盟
  function KeyExists(const Key: string): Boolean;//返回值为True表示主键存在。cFpLinux联盟
  HasSubKeys用于判断指定主键下是否有子键:function HasSubKeys: Boolean;cFpLinux联盟
  返回值为True表示主键下有子键。cFpLinux联盟
  GetKeyNames用于获取子键名称:procedure GetKeyNames(Strings: TStrings);cFpLinux联盟
  Strings用于返回当前主键下各子键的名称。cFpLinux联盟
  5.获取主键下的数据值名称:procedure GetvalueNames(Strings: TStrings)。cFpLinux联盟
  Strings用于返回当前主键下各数值名称。cFpLinux联盟
  如要获取当前系统中的拨号连接名称,可利用获取主键HKEY-USERScFpLinux联盟
  .DEFAULT下的数值名称的方法来进行。cFpLinux联盟
  6.判断数值名称存在、数值名称改名。cFpLinux联盟
  valueExists用于判断数值名称是否存在:cFpLinux联盟
  function valueExists(const Name: string): Boolean;cFpLinux联盟
  返回值为True表示数值名称存在。cFpLinux联盟
  Renamevalue用于数值名称改名:cFpLinux联盟
  procedure Renamevalue(const OldName, NewName: string);cFpLinux联盟
  以上是注册表常用操作所对应的TRegistry的方法和属性,其它方法和属性请参见Delphi联机帮助文件。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Delphi实现远程串口的数据采集  (2007-10-30 16:10:39)
 ·Delphi托盘编程实战演练  (2007-10-30 16:09:56)
 ·DELPHI中操作ACCESS技巧集  (2007-10-30 16:08:48)
 ·在DELPHI中打印TDBGrid内容  (2007-10-30 16:05:41)
 ·在Delphi 2005中安装组件  (2007-10-30 16:04:02)
 ·DELPHI组件安装全攻略  (2007-10-30 15:54:19)
 ·Delphi中树型控件的使用技巧  (2007-10-30 15:41:50)
 ·在DELPHI中用线程排序  (2007-10-30 15:41:06)
 ·Delphi的嵌入式asm: Byte快速转换为16进制  (2007-10-30 15:40:20)
 ·创建一个简单的Delphi专家  (2007-10-30 15:14:08)