在Delphi程序中操作注冊表

字號:

32位Delphi程序中可利用TReGIStry對象來存取注冊表文件中的信息。
    一、創(chuàng)建和釋放TRegistry對象
    1.創(chuàng)建TRegistry對象。為了操作注冊表,要創(chuàng)建一個TRegistry對象:ARegistry := TRegistry.Create;
    2.釋放TRegistry對象。對注冊表操作結(jié)束后,應(yīng)釋放TRegistry對象所占內(nèi)存:ARegistry.Destroy。
    二、指定要操作的鍵
    操作注冊表時,首先應(yīng)指定操作的主鍵:先給屬性RootKey賦值以指定根鍵,然后用方法OpenKey來指定要操作的主鍵名。
    1.指定根鍵(RootKey)。
    根鍵是注冊表的入口,也注冊表信息的分類,其值可為:
    HKEY-CLASSES-ROOT:存儲整個系統(tǒng)對象類信息,如ActiveX對象注冊、文件關(guān)聯(lián)等信息。
    HKEY-CURRENT-USER:存儲當前用戶的配置信息。為屬性RootKey的默認值。
    HKEY-LOCAL-MACHINE:存儲當前系統(tǒng)的軟硬件配置信息。應(yīng)用程序自己的信息可以存儲在該根鍵下。
    HKEY-USERS:存儲所有用戶通用的配置信息。
    還可以是HKEY-CURRENT-CONFIG、HKEY-DYN-DATA。
    2.指定要操作的主鍵。
    Function OpenKey(const Key: string; CanCreate: Boolean): Boolean;
    Key:主鍵名,是鍵名全名中除去根鍵的部分,如Software。
    CanCreate:在指定的主鍵名不存在時,是否允許創(chuàng)建該主鍵,True表示允許。
    返回值True表示操作成功。
    3.關(guān)閉當前主鍵。
    在讀取或存儲信息之后,應(yīng)及時將關(guān)閉當前主鍵:procedure CloseKey。
    三、從注冊表中讀取信息
    Read系列方法從注冊表讀取指定的信息(字符串、二進制和十六進制),并轉(zhuǎn)換為指定的類型。
    1.Read系列方法。
    function ReadString(const Name: string): string;
    讀取一個字符串值,Name為字符串名稱。
    function ReadInteger(const Name: string): Integer;
    讀取一個整數(shù)值,Name為整數(shù)名稱。
    function ReadBinaryData(const Name: string; var Buffer; BufSize: Integer):Integer;
    讀取二進制值,Name為二進制值名稱,Buffer為接收緩沖區(qū),BufSize為緩沖區(qū)大小,返回為實際讀取的字節(jié)數(shù)。
    其它方法還有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。
    2.讀取信息一例(顯示W(wǎng)indows的版本)。
    在HKEY-LOCAL-MACHINE下,有三個字符串值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
    if OpenKey( ′Software′,false ) then
    begin
    memo1.lines.add('Windows版本:′+ ReadString(′Version′));
    memo1.lines.add('Windows版本號:′ + ReadString(′VersionNumber′));
    memo1.lines.add(′Windows子版本號:′ + ReadString(′SubVersionNumber′));
    end;
    CloseKey;//關(guān)閉主鍵
    Destroy;//釋放內(nèi)存
    end;
    end;