AD商业广告自由选择
AD商业广告自由选择

在Delphi程序中操作注册表

正文概述 开源人   2024-10-29 19:01:14  
32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。q0Q1234FCOM专注游戏工具及源码例子分享
q0Q1234FCOM专注游戏工具及源码例子分享
一、创建和释放TRegistry对象q0Q1234FCOM专注游戏工具及源码例子分享
1.创建TRegistry对象。为了操作注册表,要创建一个TRegistry对象:ARegistry:=TRegistry.Create;q0Q1234FCOM专注游戏工具及源码例子分享
2.释放TRegistry对象。对注册表操作结束后,应释放TRegistry对象所占内存:ARegistry.Destroy。

二、指定要操作的键q0Q1234FCOM专注游戏工具及源码例子分享
操作注册表时,首先应指定操作的主键:先给属性RootKey赋值以指定根键,然后用方法OpenKey来指定要操作的主键名。q0Q1234FCOM专注游戏工具及源码例子分享
1.指定根键(RootKey)。q0Q1234FCOM专注游戏工具及源码例子分享
根键是注册表的入口,也注册表信息的分类,其值可为:q0Q1234FCOM专注游戏工具及源码例子分享
HKEY-CLASSES-ROOT:存储整个系统对象类信息,如ActiveX对象注册、文件关联等信息。q0Q1234FCOM专注游戏工具及源码例子分享
HKEY-CURRENT-USER:存储当前用户的配置信息。为属性RootKey的默认值。q0Q1234FCOM专注游戏工具及源码例子分享
HKEY-LOCAL-MACHINE:存储当前系统的软硬件配置信息。应用程序自己的信息可以存储在该根键下。q0Q1234FCOM专注游戏工具及源码例子分享
HKEY-USERS:存储所有用户通用的配置信息。q0Q1234FCOM专注游戏工具及源码例子分享
还可以是HKEY-CURRENT-CONFIG、HKEY-DYN-DATA。q0Q1234FCOM专注游戏工具及源码例子分享
2.指定要操作的主键。q0Q1234FCOM专注游戏工具及源码例子分享
FunctionOpenKey(constKey:string;CanCreate:Boolean):Boolean;q0Q1234FCOM专注游戏工具及源码例子分享
Key:主键名,是键名全名中除去根键的部分,如Software。q0Q1234FCOM专注游戏工具及源码例子分享
CanCreate:在指定的主键名不存在时,是否允许创建该主键,True表示允许。q0Q1234FCOM专注游戏工具及源码例子分享
返回值True表示操作成功。q0Q1234FCOM专注游戏工具及源码例子分享
3.关闭当前主键。q0Q1234FCOM专注游戏工具及源码例子分享
在读取或存储信息之后,应及时将关闭当前主键:procedureCloseKey。q0Q1234FCOM专注游戏工具及源码例子分享

三、从注册表中读取信息q0Q1234FCOM专注游戏工具及源码例子分享
Read系列方法从注册表读取指定的信息(字符串、二进制和十六进制),并转换为指定的类型。q0Q1234FCOM专注游戏工具及源码例子分享
1.Read系列方法。q0Q1234FCOM专注游戏工具及源码例子分享
functionReadString(constName:string):string;q0Q1234FCOM专注游戏工具及源码例子分享
读取一个字符串值,Name为字符串名称。q0Q1234FCOM专注游戏工具及源码例子分享
functionReadInteger(constName:string):Integer;q0Q1234FCOM专注游戏工具及源码例子分享
读取一个整数值,Name为整数名称。q0Q1234FCOM专注游戏工具及源码例子分享
functionReadBinaryData(constName:string;varBuffer;BufSize:Integer):Integer;q0Q1234FCOM专注游戏工具及源码例子分享
读取二进制值,Name为二进制值名称,Buffer为接收缓冲区,BufSize为缓冲区大小,返回为实际读取的字节数。q0Q1234FCOM专注游戏工具及源码例子分享
其它方法还有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。q0Q1234FCOM专注游戏工具及源码例子分享
2.读取信息一例(显示Windows的版本)。q0Q1234FCOM专注游戏工具及源码例子分享
在HKEY-LOCAL-MACHINE下,有三个字符串值Version、VersionNumber和SubVersionNumber,用于记录当前Windows的版本号。q0Q1234FCOM专注游戏工具及源码例子分享
{请在Uses中包含Registry单元}q0Q1234FCOM专注游戏工具及源码例子分享
procedureTForm1.Button1Click(Sender:TObject);q0Q1234FCOM专注游戏工具及源码例子分享
varq0Q1234FCOM专注游戏工具及源码例子分享
ARegistry:TRegistry;q0Q1234FCOM专注游戏工具及源码例子分享
beginq0Q1234FCOM专注游戏工具及源码例子分享
ARegistry:=TRegistry.Create;q0Q1234FCOM专注游戏工具及源码例子分享
//建立一个TRegistry实例q0Q1234FCOM专注游戏工具及源码例子分享
withARegistrydoq0Q1234FCOM专注游戏工具及源码例子分享
beginq0Q1234FCOM专注游戏工具及源码例子分享
RootKey:=HKEY-LOCAL-MACHINE;//指定根键为HKEY-LOCAL-MACHINEq0Q1234FCOM专注游戏工具及源码例子分享
//打开主键Softwareq0Q1234FCOM专注游戏工具及源码例子分享
ifOpenKey(′Software′,false)thenq0Q1234FCOM专注游戏工具及源码例子分享
beginq0Q1234FCOM专注游戏工具及源码例子分享
memo1.lines.add('Windows版本:′+ReadString(′Version′));q0Q1234FCOM专注游戏工具及源码例子分享
memo1.lines.add('Windows版本号:′+ReadString(′VersionNumber′));q0Q1234FCOM专注游戏工具及源码例子分享
memo1.lines.add(′Windows子版本号:′+ReadString(′SubVersionNumber′));q0Q1234FCOM专注游戏工具及源码例子分享
end;q0Q1234FCOM专注游戏工具及源码例子分享
CloseKey;//关闭主键q0Q1234FCOM专注游戏工具及源码例子分享
Destroy;//释放内存q0Q1234FCOM专注游戏工具及源码例子分享
end;q0Q1234FCOM专注游戏工具及源码例子分享
end;q0Q1234FCOM专注游戏工具及源码例子分享

四、向注册表中写入信息q0Q1234FCOM专注游戏工具及源码例子分享
Write系列方法将信息转化为指定的类型,并写入注册表。q0Q1234FCOM专注游戏工具及源码例子分享
1.Write系列方法。q0Q1234FCOM专注游戏工具及源码例子分享
procedureWriteString(constName,value:string);q0Q1234FCOM专注游戏工具及源码例子分享
写入一个字符串值,Name为字符串的名称,value为字符串值。q0Q1234FCOM专注游戏工具及源码例子分享
procedureWriteInteger(constName:string;value:Integer);q0Q1234FCOM专注游戏工具及源码例子分享
写入一个整数值。q0Q1234FCOM专注游戏工具及源码例子分享
procedureWriteBinaryData(constName:string;varBuffer;BufSize:Integer);q0Q1234FCOM专注游戏工具及源码例子分享
写入二进制值,Name为二进制值的名称,Buffer为包含二进制值的缓冲区,BufSize为缓冲区大小。q0Q1234FCOM专注游戏工具及源码例子分享
其它方法还有:WriteBool、WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。q0Q1234FCOM专注游戏工具及源码例子分享
2.写入信息一例。q0Q1234FCOM专注游戏工具及源码例子分享
下面程序使Delphi随Windows启动而自动运行。q0Q1234FCOM专注游戏工具及源码例子分享
varq0Q1234FCOM专注游戏工具及源码例子分享
ARegistry:TRegistry;q0Q1234FCOM专注游戏工具及源码例子分享
beginq0Q1234FCOM专注游戏工具及源码例子分享
ARegistry:=TRegistry.Create;q0Q1234FCOM专注游戏工具及源码例子分享
//建立一个TRegistry实例q0Q1234FCOM专注游戏工具及源码例子分享
withARegistrydoq0Q1234FCOM专注游戏工具及源码例子分享
beginq0Q1234FCOM专注游戏工具及源码例子分享
RootKey:=HKEY-LOCAL-MACHINE;q0Q1234FCOM专注游戏工具及源码例子分享
ifOpenKey(′Software′,True)thenq0Q1234FCOM专注游戏工具及源码例子分享
WriteString(′delphi′,′C:Files.exe′);q0Q1234FCOM专注游戏工具及源码例子分享
CloseKey;q0Q1234FCOM专注游戏工具及源码例子分享
Destroy;q0Q1234FCOM专注游戏工具及源码例子分享
end;q0Q1234FCOM专注游戏工具及源码例子分享
end;q0Q1234FCOM专注游戏工具及源码例子分享

五、键值维护q0Q1234FCOM专注游戏工具及源码例子分享
除了在注册表中读取、存储外,程序可能还需要增加主键、删除主键、主键改名、数据值改名等。q0Q1234FCOM专注游戏工具及源码例子分享
1.创建新主键:functionCreateKey(constKey:string):Boolean。q0Q1234FCOM专注游戏工具及源码例子分享
Key即为主键名,返回值True表示操作成功。q0Q1234FCOM专注游戏工具及源码例子分享
2.删除主键:functionDeleteKey(constKey:string):Boolean。q0Q1234FCOM专注游戏工具及源码例子分享
Key即为主键名,返回值True表示操作成功。q0Q1234FCOM专注游戏工具及源码例子分享
3.复制或移动主键:procedureMoveKey(constOldName,NewName:string;Delete:Boolean)。q0Q1234FCOM专注游戏工具及源码例子分享
OldName、NewName分别表示源主键名和目标主键名;Delete表示是否删除源主键,True表示删除,False表示保留。q0Q1234FCOM专注游戏工具及源码例子分享
复制或移动一个主键将复制或移动该子键下的所有数据值和子键内容。q0Q1234FCOM专注游戏工具及源码例子分享
4.判断指定主键是否存在,其下是否有主键,并获取主键名称。q0Q1234FCOM专注游戏工具及源码例子分享
KeyExists用于判断指定主键是否存在:q0Q1234FCOM专注游戏工具及源码例子分享
functionKeyExists(constKey:string):Boolean;//返回值为True表示主键存在。q0Q1234FCOM专注游戏工具及源码例子分享
HasSubKeys用于判断指定主键下是否有子键:functionHasSubKeys:Boolean;q0Q1234FCOM专注游戏工具及源码例子分享
返回值为True表示主键下有子键。q0Q1234FCOM专注游戏工具及源码例子分享
GetKeyNames用于获取子键名称:procedureGetKeyNames(Strings:TStrings);q0Q1234FCOM专注游戏工具及源码例子分享
Strings用于返回当前主键下各子键的名称。q0Q1234FCOM专注游戏工具及源码例子分享
5.获取主键下的数据值名称:procedureGetvalueNames(Strings:TStrings)。q0Q1234FCOM专注游戏工具及源码例子分享
Strings用于返回当前主键下各数值名称。q0Q1234FCOM专注游戏工具及源码例子分享
如要获取当前系统中的拨号连接名称,可利用获取主键HKEY-USERSq0Q1234FCOM专注游戏工具及源码例子分享
.DEFAULT下的数值名称的方法来进行。q0Q1234FCOM专注游戏工具及源码例子分享
6.判断数值名称存在、数值名称改名。q0Q1234FCOM专注游戏工具及源码例子分享
valueExists用于判断数值名称是否存在:q0Q1234FCOM专注游戏工具及源码例子分享
functionvalueExists(constName:string):Boolean;q0Q1234FCOM专注游戏工具及源码例子分享
返回值为True表示数值名称存在。q0Q1234FCOM专注游戏工具及源码例子分享
Renamevalue用于数值名称改名:q0Q1234FCOM专注游戏工具及源码例子分享
procedureRenamevalue(constOldName,NewName:string);q0Q1234FCOM专注游戏工具及源码例子分享
以上是注册表常用操作所对应的TRegistry的方法和属性,其它方法和属性请参见Delphi联机帮助文件。


声明:本文系互联网搜索而收集整理,不以盈利性为目的,文字、图文资料源于互联网且共享于互联网。
如有侵权,请联系 yao4fvip#qq.com (#改@) 删除。