delphi操作注册表

一、创建和释放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(constKey:string;CanCreate:Boolean):Boolean;
constKeyKey:主键名,是键名全名中除去根键的部分,如Software。
CanCreate:在指定的主键名不存在时,是否允许创建该主键,True表示允许。
返回值True表示操作成功。
3.关闭当前主键。
在读取或存储信息之后,应及时将关闭当前主键:procedure CloseKey。

三、从注册表中读取信息
Read系列方法从注册表读取指定的信息(字符串、二进制和十六进制),并转换为指定的类型。
1.Read系列方法。
functionReadString(constName:string):string;
读取一个字符串值,Name为字符串名称。
functionReadInteger(constName:string):Integer;
读取一个整数值,Name为整数名称。
functionReadBinaryData(constName:string;varBuffer;BufSize:Integer):Integer;
读取二进制值,Name为二进制值名称,Buffer为接收缓冲区,BufSize为缓冲区大小,返回为实际读取的字节数。
其它方法还有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。

2.读取信息一例(显示Windows的版本)。
在HKEY-LOCAL-MACHINE下,有三个字符串值Version、VersionNumber和SubVersionNumber,用于记录当前Windows的版本号。
{请在Uses中包
含Registry单元}
procedureTForm1.Button1Click(Sender:TObject);
var
ARegistry:TRegistry;
begin
ARegistry:=TRegistry.Create;
//建立一个TRegistry实例
withARegistrydo
begin
RootKey:=HKEY-LOCAL-MACHINE;//指定根键为HKEY-LOCAL-MACHINE
//打开主键Software
ifOpenKey(′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系列方法。
procedureWriteString(constName,value:string);
写入一个字符串值,Name为字符串的名称,value为字符串值。
procedureWriteInteger(constName:string;value:Integer);
写入一个整数值。
procedureWriteBinaryData(constName:string;varBuffer;BufSize:Integer);
写入二进制值,Name为二进制值的名称,Buffer为包含二进制值的缓冲区,BufSize为缓冲区大小。
其它方法还有:WriteBool、WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。
2.写入信息一例。
下面程序使Delphi随Windows启动而自动运行。
var
ARegistry:TRegistry;
begin
ARegistry:=TRegistry.Create;
//建立一个TRegistry实例
withARegistrydo
begin
RootKey:=HKEY-LOCAL-MACHINE;
ifOpenKey(′Software′,True)then
WriteString(′delphi′,′C:Files.exe′);
CloseKey;
Destroy;
end;
end;

五、键值维护
除了在注册表中读取、存储外,程序可能还需要增加主键、删除主键、主键改名、数据值改名等。
1.
创建新主键:functionCreateKey(constKey:string):Boolean
Key
即为主键名,返回值True表示操作成功。
2.
删除主键:functionDeleteKey(constKey:string):Boolean
Key
即为主键名,返回值True表示操作成功。

/

aregistry := tregistry.Create;
   with aregistry do
begin
    rootkey:=HKEY_LOCAL_MACHINE;
    if openkey('/software/abc/b/',false) then
     begin
     // if hassubkeys then
          movekey('a','c',FALSE);     //打开主键,MOVEKEY的第一个参数是由主键的任一子键做参数,子键权复制
          showmessage('操作成功');
     end;
     closekey;
     destroy;
end;
end;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值