32位delphi程式中可利用tregistry物件來訪問登錄檔檔案中的資訊。
一、建立和釋放tregistry物件
1.建立tregistry物件。為了操作登錄檔,要建立乙個tregistry物件:aregistry := tregistry.create;
2.釋放tregistry物件。對登錄檔操作結束後,應釋放tregistry物件所佔記憶體:aregistry.destroy。
二、指定要操作的鍵
操作登錄檔時,首先應指定操作的主鍵:先給屬性rootkey賦值以指定根鍵,然後用方法openkey來指定要操作的主鍵名。
1.指定根鍵(rootkey)。
根鍵是登錄檔的入口,也登錄檔資訊的分類,其值可為:
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。
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。
2.讀取資訊一例(顯示windows的版本)。
在hkey-local-machine下,有三個字串值version、versionnumber和subversionnumber,用於記錄當前windows的版本號。
procedure tform1.button1click(sender:tobject);
vararegistry : 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;//關閉主鍵
destroy;//釋放記憶體
end;
end;
四、向登錄檔中寫入資訊
write系列方法將資訊轉化為指定的型別,並寫入登錄檔。
1.write系列方法。
procedure writestring(const name, value: string);
寫入乙個字串值,name為字串的名稱,value為字串值。
procedure writeinteger(const name: string; value: integer);
寫入乙個整數值。
procedure writebinarydata(const name: string; var buffer; bufsize: integer);
寫入二進位制值,name為二進位制值的名稱,buffer為包含二進位制值的緩衝區,bufsize為緩衝區大小。
其它方法還有:writebool、writecurrency、writedate、writedatetime、writefloat、writetime。
2.寫入資訊一例。
下面程式使delphi隨windows啟動而自動執行。
vararegistry : tregistry;
begin
aregistry := tregistry.create;
//建立乙個tregistry例項
with aregistry do
begin
rootkey:=hkey-local-machine;
if openkey(′software′,true) then
writestring(′delphi′,′c:files.exe′);
closekey;
destroy;
end;
end;
五、鍵值維護
除了在登錄檔中讀取、儲存外,程式可能還需要增加主鍵、刪除主鍵、主鍵改名、資料值改名等。
1.建立新主鍵:function createkey(const key: string): boolean。
key即為主鍵名,返回值true表示操作成功。
2.刪除主鍵:function deletekey(const key: string): boolean。
key即為主鍵名,返回值true表示操作成功。
3.複製或移動主鍵:procedure movekey(const oldname, newname: string; delete: boolean)。
oldname、newname分別表示源主鍵名和目標主鍵名;delete表示是否刪除源主鍵,true表示刪除,false表示保留。
複製或移動乙個主鍵將複製或移動該子鍵下的所有資料值和子鍵內容。
4.判斷指定主鍵是否存在,其下是否有主鍵,並獲取主鍵名稱。
keyexists用於判斷指定主鍵是否存在:
function keyexists(const key: string): boolean;//返回值為true表示主鍵存在。
hassubkeys用於判斷指定主鍵下是否有子鍵:function hassubkeys: boolean;
返回值為true表示主鍵下有子鍵。
getkeynames用於獲取子鍵名稱:procedure getkeynames(strings: tstrings);
strings用於返回當前主鍵下各子鍵的名稱。
5.獲取主鍵下的資料值名稱:procedure getvaluenames(strings: tstrings)。
strings用於返回當前主鍵下各數值名稱。
如要獲取當前系統中的撥號連線名稱,可利用獲取主鍵hkey-users
.default下的數值名稱的方法來進行。
6.判斷數值名稱存在、數值名稱改名。
valueexists用於判斷數值名稱是否存在:
function valueexists(const name: string): boolean;
返回值為true表示數值名稱存在。
renamevalue用於數值名稱改名:
procedure renamevalue(const oldname, newname: string);
以上是登錄檔常用操作所對應的tregistry的方法和屬性,其它方法和屬性請參見delphi聯機幫助檔案。
在Delphi中輕鬆操作登錄檔TRegistry類
在delphi中輕鬆操作登錄檔 tregistry類 在應用程式中,經常需要對登錄檔進行各種操作,如將程式名稱 安裝路徑等資訊儲存到登錄檔中。delphi對相應api函式做了進一步封裝,使得在應用程式中操作登錄檔更加簡單。1 原理 delphi提供了tregistry類,它直接繼承自tobject類...
Delphi中讀寫登錄檔
delphi程式中入如何操作登錄檔,在應用程式中,經常需要對登錄檔進行各種操作,如將程式名稱 安裝路徑等資訊儲存到登錄檔中。32位delphi程式中可利用tregistry物件來訪問登錄檔檔案中的資訊。一 建立和釋放tregistry物件 1.建立tregistry物件。為了操作登錄檔,要建立乙個t...
Delphi 開機啟動 操作登錄檔
開機啟動註冊路徑 64位作業系統 hkey local machine software wow6432node microsoft windows currentversion run 32位作業系統 hkey local machine software microsoft windows cu...