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的版本号。
{请在Uses中包含Registry单元}
procedure TForm1.Button1Click(Sender:TObject);
var
ARegistry : 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启动而自动运行。
var
ARegistry : 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联机帮助文件。
转自:http://www.delphifans.com/infoView/Article_18.html
分享到:
相关推荐
在Delphi程序中操作注册表 鼠标和键盘控制 如何为Delphi程序添加事件和事件处理器 在Delphi应用程序中拖动控件 用DEPHI为应用软件建立注册机制 用Delphi创建临时文件 Delphi 5快速创建控制面板程序 Delphi...
在Delphi程序中操作注册表 鼠标和键盘控制 如何为Delphi程序添加事件和事件处理器 在Delphi应用程序中拖动控件 用DEPHI为应用软件建立注册机制 用Delphi创建临时文件 Delphi 5快速创建控制面板程序 Delphi...
标题"Delphi修改操作注册表权限例子"表明这是一个实际的应用程序或代码片段,展示了如何在Delphi中更改注册表访问权限。这通常涉及到使用API函数,因为Delphi的标准库并不直接提供这些功能。Windows API提供了诸如...
源代码分析和学习可以覆盖到这些知识点,同时也能了解如何在Delphi程序中实现用户界面,如创建表单、按钮等控件,以及如何将这些控件与TRegistry对象交互,响应用户的操作。 通过研究这个“delphi注册表编辑器”的...
在编程领域,Delphi是一种基于Pascal语言的集成开发环境,它提供了强大的Windows应用程序开发工具。在编写Windows应用程序时,经常需要与注册表进行交互,以便存储用户设置、应用程序配置等信息。本教程将深入探讨...
### 在Delphi中如何对注册表进行操作 #### 概述 在开发Windows应用程序时,经常需要对系统注册表进行读写操作。Delphi作为一款强大的集成开发环境(IDE),提供了方便的操作系统注册表的API封装。通过Delphi内置的`...
在Windows系统中,注册表是存储操作系统和应用程序设置的关键数据库。了解如何在Delphi中对注册表进行简单操作是每个Delphi开发者必备的技能之一。下面我们将深入探讨Delphi源码在注册表操作中的基本概念、方法和...
在 Delphi 中,我们通常会使用 `Registry` 类来操作注册表,但这个类并未包含所有可能的 API 调用。通过封装 API,我们可以扩展其功能,实现更复杂的操作。 以下是一些关键知识点: 1. **注册表结构**:Windows ...
在IT领域,注册表是Windows操作系统中的一个重要组成部分,它存储着系统及应用程序的配置信息。Delphi是一款强大的Object Pascal编程环境,它允许开发者通过API调用或者专门的组件来访问和操作注册表。本篇文章将...
这个Delphi程序很可能包含以下功能: 1. 扫描注册表:程序首先会遍历注册表的不同关键区域,如HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER,查找可能存在的无用或废弃条目。 2. 分析和识别:在扫描过程中,程序会运用...
总之,禁用U盘和光驱的Delphi程序通过操作注册表实现了对硬件设备的管理,这涉及到对Windows操作系统底层机制的理解,同时也展示了Delphi在处理系统级任务上的能力。尽管现代开发工具和平台不断涌现,但Delphi及其...
Delphi,作为一个强大的面向对象的 Pascal 编程环境,提供了丰富的API和组件来访问和操作注册表。本实例将探讨如何在Delphi中进行读写注册表操作,以及如何将这些功能封装成可复用的函数。 首先,我们需要了解...
TRegistry 类是 Delphi 提供的用于操作注册表的组件,它可以方便地创建、读取、修改和删除注册表项。以下是一个简单的示例,展示如何创建一个 TRegistry 对象并打开根键(如 HKEY_LOCAL_MACHINE 或 HKEY_CURRENT_...
以下是一些关于在Delphi中操作注册表的重要知识点: 1. 创建TRegistry对象:首先,你需要创建一个TRegistry对象实例,通常使用`var Reg: TRegistry;`声明并初始化`Reg := TRegistry.Create;`。 2. 设置访问权限:...
3. **属性设计**:设计控件的属性以反映注册表中的键路径、值类型、默认值等信息。例如,可以有Path属性来设置或获取注册表键的位置,ValueType属性来设定或返回值的数据类型。 4. **事件触发**:添加OnRead、On...
Delphi TRegistry获取注册表某节点所有键值,注册表操作实例,作者:lifangchao,教科书中的示例,枚举并列出注册表中指定节点下的所有键值,程序运行后自动读取注册表中已定义好的节点项,遍历该节点下的所有键值并...
2. **注册表API调用**:Delphi程序会使用Windows API函数,如`RegNotifyChangeKeyValue`,来订阅注册表的特定部分并接收变更通知。这些API函数允许程序注册回调函数,当指定的注册表键值发生变化时,系统会触发回调...
4. **错误处理**:在操作注册表时,错误处理是必不可少的,因为不正确的操作可能会导致系统不稳定。源代码中可能包含了异常处理机制,如Try...Except...Finally结构,来确保程序在遇到问题时能够正确恢复。 5. **...
首先,我们需要理解注册表是Windows操作系统中的核心数据库,存储着系统配置、应用程序设置以及硬件设备的相关信息。编写注册表编辑器意味着我们需要处理HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE...
在您提供的资源“Delphi注册表无效信息清理工具代码..rar”中,我们可以推测这是一份用Delphi编写的程序源代码,用于清理计算机系统中的注册表无效信息。 注册表是Windows操作系统中的一个重要组成部分,它存储着...