科技行者

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

知识库

知识库 安全导航

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

Delphi编程访问注册表

  • 扫一扫
    分享文章到微信

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

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

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

关键字:

  • 评论
  • 分享微博
  • 分享邮件
二、 编程思想

  (一)、注册表中隐藏驱动器的原理

  1、在DOS、WIN9X/NT中,驱动器是用字母A-Z表示。其中A和B表示软盘驱动器,C到Z则表示硬盘或网络驱动器。也就是说,总共可以支持26个驱动器。

  2、在注册表的

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorer下新建或修改DWORD类型的NoDrives的值,可以隐藏或显示驱动器图标。从而达到本程序的目的。

  3、NoDrives的取值特点

  NoDrives是4字节共32位的键值。从第0位到第31位的取值,就分别控制着驱动器A到Z的状态。若第0位取值为1,则将隐藏驱动器A;若第1位为0,则显示驱动器B,如此类推即可。如图三所示:



  (二)、DelPhi中对注册表的读写过程简介

  在DelPhi中为程序员提供了一个Tregistry类,它提供了众多丰富的方法来完成对注册表的修改。限于篇幅,下面只针对本实例中所用到的读写注册表的方法进行简介:

  (1)打开一个键:OpenKey();

function OpenKey(const Key: String; CanCreate: Boolean): Boolean;

  (2)向一个键中写入整型数据:WriteInteger();

procedure WriteInteger(const Name: string; Value: Integer);

  (3)读取一个键中某个具体的整型数值:ReadInteger();

function ReadInteger(const Name: String): Integer;

  (4)判断某一键值是否存在:ValueExists();

function ValueExists(const Name: string): Boolean;

  (5)关闭一个键:CloseKey;

procedure CloseKey;

  (三)、设计方法(分为注册表的读写两部分)

  1、"隐藏"按钮中代码的设计思想(注册表的写操作)

  (1)、当用户单击"隐藏"按钮时,就利用OpenKey方法打开注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\explorer,判断其下是否存在"NoDrives"键。若此键不存在,就自动建立它。然后,根据用户选择的选择修改"NoDrives"的值。用户的选择和NoDrives的值对应关系如下:

  用户选择"A驱",则NoDrives的值为:1;

  用户选择"B驱",则NoDrives的值为:2;

  用户同时选择"A驱"和"B驱",则NoDrives的值为:3;

  (2)、根据用户的选择,利用方法WriteInteger(),将NoDrives的值写入注册表;

  (3)、利用CloseKey关闭打开的主键。

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

  NoDrives的值为1,则窗体上"A驱"复选框处于选中状态;

  NoDrives的值为2,则窗体上"B驱"复选框处于选中状态;

  NoDrives的值为3,则窗体上"A驱"和"B驱"复选框同时处于选中状态;
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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