Delphi的注册表操作

字体大小: 中小 标准 ->行高大小: 标准
Delphi的注册表操作
 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。 

   一、创建和释放TRegistry对象 
  1.创建TRegistry对象。为了操作注册表,要创建一个TRegistry对象:
       ARegistry := TRegistry.Create;
   2.释放TRegistry对象。对注册表操作结束后,应释放TRegistry对象所占内存:
       ARegistry.Destroy;
 
  二、指定要操作的键 
  操作注册表时,首先应指定操作的主键:先给属性RootKey赋值以指定根键,然后用方法OpenKey来指定要操作的主键名。 

  1.指定根键(RootKey)。举例:
     ARegistry.RootKey:=HKEY_LOCAL_MACHINE;
   根键是注册表的入口,也注册表信息的分类,其值可为: 
  HKEY_CLASSES_ROOT:存储整个系统对象类信息,如ActiveX对象注册、文件关联等信息。 
  HKEY_CURRENT_USER:存储当前用户的配置信息。为属性RootKey的默认值。 
  HKEY_LOCAL_MACHINE:存储当前系统的软硬件配置信息。应用程序自己的信息可以存储在该根键下。 
   HKEY_USERS:存储所有用户通用的配置信息。 
  还可以是HKEY_CURRENT_CONFIG、HKEY_DYN_DATA。 

  2.指定要操作的主键。 
  Function OpenKey(const Key: string; CanCreate: Boolean): Boolean; 
    Key:主键名,是键名全名中除去根键的部分,如Software\Borland\Delphi。 
    CanCreate:在指定的主键名不存在时,是否允许创建该主键,True表示允许。 
    返回值True表示操作成功。 

  3.关闭当前主键。 
  在读取或存储信息之后,应及时将关闭当前主键:
     procedure CloseKey;
   三、从注册表中读取信息 
  Read系列方法从注册表读取指定的信息(字符串、二进制和十六进制),并转换为指定的类型。 

  1.Read系列方法。 
  function ReadString(const Name: string): string; 
     读取一个字符串值,Name为字符串名称。 
  function ReadInteger(const Name: string): Integer; 
    读取一个整数值,Name为整数名称。 
  function ReadBinaryData(const Name: string; var Buffer; BufSize: Integer):Integer; 
    读取二进制值,Name为二进制值名称,Buffer为接收缓冲区,BufSize为缓冲区大小,返回为实际读取的字节数。 
  其它方法还有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。 

   founction ReadFloat(const Name : string) : Double; 
   founction ReadTime(const Name : string) : TdateTime;
    founction ReadBool(const Name) : Boolean; 

  2.读取信息一例(显示Windows的版本)。 
    在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion下,有三个字符串值Version、VersionNumber和SubVersionNumber,用于记录当前Windows的版本号。 

  {请在Uses中包含Registry单元} 
  procedure TForm1.Button1Click(Sender:TObject); 
  var 
    ARegistry : TRegistry; 
  begin 
    ARegistry := TRegistry.Create;  //建立一个TRegistry实例 
   with ARegistry do 
    begin 
      RootKey := HKEY_LOCAL_MACHINE;  //指定根键为HKEY_LOCAL_MACHINE 
      //打开主键Software\Microsoft\Windows\CurrentVersion 
      if OpenKey('Software\Microsoft\Windows\CurrentVersion',false) then 
      begin 
        memo1.lines.add('Windows版本:'    + ReadString('Version')); 
        memo1.lines.add('Windows版本号:'  + ReadString('VersionNumber')); 
        memo1.lines.add('Windows子版本号:'+ ReadString('SubVersionNumber')); 
     end; 
      CloseKey;//关闭主键 
      Destroy;//释放内存 
   end; 
  end; 

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/69789.html