科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Delphi编程访问注册表

Delphi编程访问注册表

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文以一个实例为基础,讲解在DelPhi中如何以编程方式对注册表进行修改

作者:ljp 来源:yesky 2007年11月1日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、设计过程

  (一)、界面的建立

  1、启动DelPhi5,新建一个窗体Form1;

  2、在窗体Form1上建立三个TbitBtn按钮、两个复选框TcheckBox、一个GroupBox1,调整各对象的位置,使其与图一所示。

  (二) 、代码编辑

  1、要使程序能够正确访问注册表,必须在单元文件unit Unit1的interface的 uses中增加注册表类:Registry。此句千万不能少。

  2、按钮Bit_all("全选"按钮)中的代码如下:

procedure TForm1.Bit_allClick(Sender: TObject);
begin
A_check.Checked:=true;
B_check.Checked:=true;
end; //当用户单击"全选"按钮时,将两个复选框都设为选中状态。

  3、按钮Bit_cancel("取消"按钮)中的代码如下:

procedure TForm1.Bit_cancelClick(Sender: TObject);
begin
A_check.Checked:=false;
B_check.Checked:=false;
end; //当用户单击"取消"按钮时,则取消复选框的选中状态。

  4、按钮Bit_hide("隐藏"按钮)中的代码如下(主要程序代码均放在这里,当用户按此按钮时,即完成隐藏驱动器的目的):

procedure TForm1.Bit_hideClick(Sender: TObject);
var myreg:TRegistry; // 定义Tregistry型变量myreg
temp1,temp2,myval:integer;//temp1和temp2分别保存复选框A_check和B_check的值;
//myval用于保存写入注册表的最终值,它等于temp1和temp2的和。
begin
temp1:=0;
temp2:=0;
myval:=0; //初始三个变量。
myreg:=TRegistry.Create;//利用Tregistry的Create方法创建一个实例myreg。
with myreg do
begin
rootkey:=HKEY_LOCAL_MACHINE;//确定打开注册表的主键。
if openkey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorer',true) then
begin //打开NoDrives所在的键。
case form1.A_Check.Checked of
true:
temp1:=1;//当用户点击"A驱"复选框时,将临时变量temp1置1。
end;
case form1.B_Check.Checked of
true:
temp2:=2; //当用户点击"B驱"复选框时,将临时变量temp2置2。
end;
myval:=temp1+temp2;//将临时变量temp1和temp2中的值求和赋给myval。因为用户可,
//能选中两个复选框,此时写入注册表的值应为1+2,所以用temp1与temp2的和赋给myval。
WriteInteger('NoDrives',myval);//利用函数创建一个Dword值"NoDrives",其值为myval
//并写入注册表。
myreg.CloseKey;//关闭前面打开的主键,完成隐藏操作。
myreg.Free;
end;
end;
end;

  5、为了实现程序启动时能自动判断系统驱动器的当前状态,还要在Form1的FormCreate()方法中利用ReadInteger()和ValueExists()读取注册表中NoDrives的值。然后根据读出的NoDrives的值设置窗体上两个复选的选择状态。程序如下:

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 //如果打开键成功且NoDrives存在,则进行下面操作。
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即可看到实际效果。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章