在Delphi中怎么對注冊表進行設(shè)置
發(fā)表時間:2023-04-07 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]中國人民銀行鄭州培訓(xùn)學(xué)院 信息部 潘漢杰 Windows注冊表跟蹤記錄了操作系統(tǒng)和各種在系統(tǒng)上安裝的應(yīng)用程序的有關(guān)信息。注冊表是一個分層數(shù)據(jù)庫。該數(shù)據(jù)庫包含以特定格式表示的配置信息,并且可以直接通...
中國人民銀行鄭州培訓(xùn)學(xué)院 信息部 潘漢杰
Windows注冊表跟蹤記錄了操作系統(tǒng)和各種在系統(tǒng)上安裝的應(yīng)用程序的有關(guān)信息。注冊表是一個分層數(shù)據(jù)庫。該數(shù)據(jù)庫包含以特定格式表示的配置信息,并且可以直接通過注冊表編輯器程序編輯,也可以通過應(yīng)用程序修改。在早期的Windows版本中,INI文件粗略地完成了這一功能,盡管注冊表與INI文件有一些相似之處,但不管怎樣,由于組織結(jié)構(gòu)的原因,注冊表比傳統(tǒng)的INI文件要復(fù)雜得多。
注冊表分成若干個主要部分,各個部分(或者說關(guān)鍵字)包含了不同種類的系統(tǒng)信息。比如說,當(dāng)你創(chuàng)建一個應(yīng)用程序時,你可以在HKEY_LOCAL_MACHINE這個部分的SOFTWARE子節(jié)中注冊你的配置信息。應(yīng)用程序可以把配置信息以多種數(shù)據(jù)類型(包括字符串、貨幣、日期、浮點數(shù)和布爾值)的形式保存在關(guān)鍵字中。本文通過實例介紹在Delphi的應(yīng)用程序中如何對Windows 98的注冊表進行操作(如:創(chuàng)建關(guān)鍵字、獲取一個關(guān)鍵字的數(shù)據(jù)值、刪除關(guān)鍵字、刪除關(guān)鍵字中的數(shù)據(jù)值等),下列示例程序均在Delphi 4.0中調(diào)試通過,請放心使用。
Delphi中定義了一個Tregistry類,通過使用這個類中封裝的很多有關(guān)對注冊表操作的方法和屬性可以完成對注冊表的操作。
1、 在注冊表中創(chuàng)建一個新的關(guān)鍵字
Tregistry類中有一個CreateKey方法,使用該方法可以在注冊表中創(chuàng)建一個新的關(guān)鍵字,該方法的原型聲明為:function CreateKey(const Key: string) : Boolean;
示例代碼如下:
unit passwd;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Registry;
type
Tpassword = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.DFM}
procedure Tpassword.Button1Click(Sender: TObject);
var
MyReg : TRegistry;
begin
MyReg := TRegistry.Create;
MyReg.RootKey := HKEY_LOCAL_MACHINE;
try
if MyReg.OpenKey('\SOFTWARE\',FALSE) then
if not MyReg.KeyExists('Passwd') then
begin
MyReg.CreateKey('Passwd');
if MyReg.OpenKey('\SOFTWARE\Passwd',FALSE) then
Label1.Caption := '關(guān)鍵字Passwd已建立!'
else
Label1.Caption := '關(guān)鍵字Passwd無法建立!';
end
else
Label1.Caption := '關(guān)鍵字Passwd已經(jīng)存在!'
else
Label1.Caption := '注冊表打不開!';
MyReg.CloseKey;
finally
MyReg.Free;
end;
end;
end.
2、 向注冊表關(guān)鍵字中寫入相關(guān)的數(shù)據(jù)值
在Tregistry類中提供了一系列的Write方法用來寫入與當(dāng)前關(guān)鍵字相關(guān)的數(shù)據(jù)值。常用方法的原型定義如下:
procedure WriteString(const Name, Value : string);
procedure WriteInteger(const Name : string ; Value : Integer);
procedure WriteFloat(const Name : string ; Value : Double);
procedure WriteTime(const Name : string ; Value : TDateTime);
procedure WriteBool(const Name : string ; Value : Boolean);
示例代碼:
procedure TForm1.Button1Click(Sender: TObject);
var
MyReg : TRegistry;
begin
MyReg := TRegistry.Create;
MyReg.RootKey := HKEY_LOCAL_MACHINE;
try
if not MyReg.OpenKey('\SOFTWARE\',FALSE) then ;
if not MyReg.KeyExists('Passwd') then
MyReg.CreateKey('Passwd');
if not MyReg.OpenKey('\SOFTWARE\Passwd',FALSE) then ;
MyReg.WriteString('pwd1','mypassword1');
MyReg.WriteInteger('pd2',19642);
MyReg.CloseKey;
finally
MyReg.Free;
end;
end;
3、 從注冊表關(guān)鍵字中讀出相關(guān)的數(shù)據(jù)值
在Tregistry類中還提供了與Write方法相對應(yīng)用的用來讀出與當(dāng)前關(guān)鍵字相關(guān)的數(shù)據(jù)值。常用方法的原型定義如下:
founction ReadString(const Name : string) : string;
founction ReadInteger(const Name : string) : Integer;
founction ReadFloat(const Name : string) : Double;
founction ReadTime(const Name : string) : TdateTime;
founction ReadBool(const Name) : Boolean;
示例程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
MyReg : TRegistry;
begin
MyReg := TRegistry.Create;
MyReg.RootKey := HKEY_LOCAL_MACHINE;
try
if not MyReg.OpenKey('\SOFTWARE\',FALSE) then ;
if not MyReg.KeyExists('Passwd') then ;
if not MyReg.OpenKey('\SOFTWARE\Passwd',FALSE) then ;
Label1.Caption := MyReg.ReadString('pwd1');
Label2.Caption := IntToStr(MyReg.ReadInteger('pd2'));
MyReg.CloseKey;
finally
MyReg.Free;
end;
end;
4、 從注冊表刪除關(guān)鍵字或指定的數(shù)據(jù)值
使用Tregistry中提供的DeleteKey和DeleteValue方法可以刪除指定的關(guān)鍵字和數(shù)據(jù)值。這兩個方法的原型定義如下:
function DeleteKey(const Key : string) : Boolean;
function DeleteValue(const Key : string) : Boolean;
使用DeleteKey方法刪除指定的關(guān)鍵字時,如果被刪除的關(guān)鍵字在任何層次有子關(guān)鍵字,它們將同時被刪除。上面兩個方法在執(zhí)行時,如果刪除成功,則返回True;否則返回False。
示例程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
MyReg : TRegistry;
begin
MyReg := TRegistry.Create;
MyReg.RootKey := HKEY_LOCAL_MACHINE;
try
if not MyReg.OpenKey('\SOFTWARE\Passwd',FALSE) then ;
if MyReg.DeleteValue('pwd1') then
label1.Caption := 'value [pwd1] has deleted!';
MyReg.CloseKey;
if not MyReg.OpenKey('\SOFTWARE\',FALSE) then ;
if MyReg.DeleteKey('Passwd') then
label2.Caption := 'Key [passwd] has deleted!';
MyReg.CloseKey;
finally
MyReg.Free;
end;
end;
通過上面的實例我們簡單介紹了Delphi中對注冊表的相關(guān)操作。在Tregistry類中還有很多對注冊表的關(guān)鍵字和數(shù)據(jù)值的操作方法,但其基本的操作方法和上面的示例程序在同小異,限于篇幅就不贅述了。