哪位大虾能不能告诉我一个操作注册表的几个API函数呀!!

cow8063 2002-12-07 12:43:01
最好能全面的,而且是中文说明的,说说格式好不好呀。急用,谢谢了!
...全文
31 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hansion3406 2002-12-15
  • 打赏
  • 举报
回复
呵呵...受教了..
cow8063 2002-12-15
  • 打赏
  • 举报
回复
好的,谢谢楼上的,不过现在忙,要下周再来结贴,呵呵,
Billy_Chen28 2002-12-09
  • 打赏
  • 举报
回复
这里有一个全的:
在Delphi程序中操作注册表


  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\Borland\Delphi。

  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\Software\Microsoft\Windows\CurrentVersion下,
有三个字符串值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\Microsoft\Windows\CurrentVersion

   if OpenKey( ′Software\Microsoft\Windows\CurrentVersion′,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\Microsoft\Windows\CurrentVersion\Run′,True) then

   WriteString(′delphi′,′C:\Program Files\borland\delphi3\bin\delphi32.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\RemoteAccess\Addresses下的数值名称的方法来进行。

  6.判断数值名称存在、数值名称改名。

  ValueExists用于判断数值名称是否存在:

  function ValueExists(const Name: string): Boolean;

  返回值为True表示数值名称存在。

  RenameValue用于数值名称改名:

  procedure RenameValue(const OldName, NewName: string);

  以上是注册表常用操作所对应的TRegistry的方法和属性,
其它方法和属性请参见Delphi联机帮助文件。
uncarman 2002-12-09
  • 打赏
  • 举报
回复
我在Win2000下用TRegistry的SaveKey,RestoreKey结果无效
stanely 2002-12-07
  • 打赏
  • 举报
回复
看tregistry类的源代码
cow8063 2002-12-07
  • 打赏
  • 举报
回复
但是我都没有这些,DELPHI的我有些看不懂,我要的是这几个函数的格式,
比如说他有什么参数,这些参数怎么用法
ehom 2002-12-07
  • 打赏
  • 举报
回复
查看registry单元,就是对这些API的封装
ehom 2002-12-07
  • 打赏
  • 举报
回复
MSDN
magc888 2002-12-07
  • 打赏
  • 举报
回复
uses registry;
.
.
procedure ...
const
section='hardware\devicemap\serialcomm';
var
freginifile1:tregistry;
begin
freginifile1:=tregistry.create;
freginifile1.rootkey:=hkey_local_machine;
freginifile1.openkey(section,false);
kou1:=freginifile1.Readstring('..');
.
.
freginifile1.CloseKey ;
freginifile1.free;
end;


luoming 2002-12-07
  • 打赏
  • 举报
回复
我这里也有例子
luoming 2002-12-07
  • 打赏
  • 举报
回复
DELPHI里不是有帮助吗

很全的

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧