begin
if readinteger('NoDrives')=1 then //讀取NoDrives的值,若為1,則將A_check設為選中。
A_check.Checked:=true;
if readinteger('NoDrives')=2 then//讀取NoDrives的值,若為2,則將B_check設為選中。
B_check.Checked:=true;
if readinteger('NoDrives')=3 then//讀取NoDrives的值,若為3,則將兩個復選框均選中。
begin
A_check.Checked:=true;
B_check.Checked:=true;
end;
myreg.CloseKey;
myreg.Free;
end;
end;
end;
6、將以上程序保存為Hide_drive,然後編譯成可執行程序Hide_Drive.exe即可。此程序在Win2000和Delphi5中運行通過。操作時隱藏了驅動器,請重新注銷Windows即可看到實際效果。
四、結束語
在程序中訪問注冊表的基本方法是:打開注冊表、讀寫注冊表、關閉打開的主鍵。此實例程序本身雖然比較簡單,但其訪問注冊表的方法卻比較通用,你可以將此方法靈活運用到其他程序語言中,設計出滿足要求的實用程序。其實在DelPhi中,Tregistry類為我們提供了更多更豐富的方法來操作注冊表,但操作的方法仍然是一樣的,希望通過本文的實例,能為廣大Delphi愛好者或程序設計愛好者提供一點幫助。
附:為了使大家能對此程序有一個完整的了解,下面附上源程序,請大家指教!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons,Registry; // 此處加上Registry,才能使程序訪問注冊表
type
TForm1 = class(TForm)
A_Check: TCheckBox;
B_Check: TCheckBox;
Bit_all: TBitBtn;
Bit_cancel: TBitBtn;
Bit_hide: TBitBtn;
GroupBox1: TGroupBox;
procedure Bit_allClick(Sender: TObject);
procedure Bit_cancelClick(Sender: TObject);
procedure Bit_hideClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Bit_allClick(Sender: TObject);
begin
a_check.Checked:=true;
b_check.Checked:=true;
end;
procedure TForm1.Bit_cancelClick(Sender: TObject);
begin
a_check.Checked:=false;
b_check.Checked:=false;
end;
procedure TForm1.Bit_hideClick(Sender: TObject);
var myreg:TRegistry;
temp1,temp2,myval:integer;
begin
temp1:=0;
temp2:=0;
myval:=0;
myreg:=TRegistry.Create;
with myreg do
begin
rootkey:=HKEY_LOCAL_MacHINE;
if openkey('SOFTWARE\Microsoft\Windows\CurrentVersion\PolicIEs\explorer',true) then
begin
case form1.A_Check.Checked of
true:
temp1:=1;
end;
case form1.B_Check.Checked of
true:
temp2:=2;
end;
myval:=temp1+temp2;
WriteInteger('NoDrives',myval);
myreg.CloseKey;
myreg.Free;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var myreg:TRegistry;
begin
myreg:=TRegistry.Create;
with myreg do
begin
rootkey:=HKEY_LOCAL_MacHINE;
if openkey('SOFTWARE\Microsoft\Windows\CurrentVersion\PolicIEs\explorer',true) and ValueExists('NoDrives') then
begin
if readinteger('NoDrives')=1 then
A_check.Checked:=true;
if readinteger('NoDrives')=2 then
B_check.Checked:=true;
if readinteger('NoDrives')=3 then
begin
A_check.Checked:=true;
B_check.Checked:=true;
end;
myreg.CloseKey;
myreg.Free;
end;
end;
end;
end.