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联机帮助文件

转载于:https://blog.51cto.com/bigpower/69367

在Delphi程序中操作注册表相关推荐

  1. 命令行(cmd.exe)中操作注册表

    批处理是windows下公认的简化工作甚至自动化的官方语言,批处理是多个命令组合起来相互协作批量处理预定工作,所以学批处理就得先一个个命令学,现在开始学习如何在命令行(cmd.exe)中操作注册表. ...

  2. 应用程序中对注册表的编辑

    在WinCE中的应用程序如需对注册表编辑,可使用如下几个函数: Programming element Description RegCloseKey This function releases t ...

  3. delphi 操作注册表详解

    32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息.   一.创建和释放TRegistry对象   1.创建TRegistry对象.为了操作注册表,要创建一个TRegistr ...

  4. Autocad、中望CAD自动加载程序研究(注册表法、acad.rx、acaddoc.lsp或acad.lsp)

    Autocad.中望CAD自动加载程序研究(注册表法.acad.rx.acaddoc.lsp或acad.lsp) 一.使用注册表 假设你的arx文件名字是aaa.arx绝对路径是c:\aaa.arx ...

  5. 在Delphi程序中调用控制面板设置功能

    ====================================================== 注:本文源代码点此下载 ================================= ...

  6. delphi query 存储为dbf_在Delphi程序中维护DBF数据库

    下载本文示例代码 p> 由于Delphi开发的易用性和快速 性,很多原来使用Foxpro和VisualFoxpro编程的程序员转向了Delphi.但由于工作上或其它的原因,原来的应用系统尤其是应 ...

  7. Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结

    Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结 1. 注册表是树形数据库 1 2. 注册表的由来 1 3. Java  操作注册表 2 3.1. 使用Preferences  ...

  8. C#中对注册表的操作指南

    C#中对注册表的操作指南 Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKE ...

  9. 使用批处理文件来操作注册表

    在入侵过程中经常回操作注册表的特定的键值来实现一定的目的,例如:为了达到隐藏后门.木马程序而删除Run下残余的键值.或者创建一个服务用以加载后门.当然我们也会修改注册表来加固系统或者改变系统的某个属性 ...

最新文章

  1. 算法炒房三月亏20多亿。房地产巨头大翻车:房价水太深,AI根本把握不住
  2. 2020年人工神经网络第二次作业-参考答案第三题
  3. 让PPT声音播放不再“哑口无言”
  4. OpenCV使用inRange的阈值操作Thresholding Operations
  5. python和按键精灵自动化测试_按键精灵对APP自动化测试(下)
  6. COM组件的运行机制
  7. java io流的学习总结~~
  8. cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration的解决
  9. JavaScript数据结构学习笔记(封装二叉树)
  10. 效果图软件选择手册 | Lumion、VRay、Conora、Enscape...你适合用什么软件做效果图?
  11. 阿里云服务器价格表:第7代云服务器ECS收费价格表
  12. elasticsearch-7.17.4 基础班升级到白金版本
  13. 斯坦福2021秋季·实用机器学习【中文】【合集】+1.1课程介绍
  14. Electron 去掉标题栏并设定可拖动
  15. etcd之日志和快照管理
  16. 初学者C语言练习题-指针
  17. 初次接触tridium niagara软件
  18. 用gd扩展调用imagegrabscreen截图,完全黑屏!允许服务与桌面交互没用!
  19. zepto移动端web相册
  20. C:\Users\Admin\AppData\Roaming\npm-cache\_logs\2019-06-06T01_10_38_076Z-debug.log踩坑记

热门文章

  1. C# Socket编程笔记
  2. apkplug利用plugin.xml传递自定义属性
  3. 使用KiWi Syslog Daemon构建日志服务器
  4. 理解Hinted Handoff
  5. LAMP部署搭建————重要文件备份
  6. 比特币现金扬声器系列II将领先的比特币一起带来
  7. 欧洲、加拿大、澳大利亚新增2.1万个点可购买比特币现金
  8. python类方法以及类调用实例方法的理解
  9. WPF ComboBox_SelectionChange事件中获取当前文本的方法
  10. iOS开发网络篇—GET请求和POST请求