windows注册表-3、 注册表数据结构6

  使用注册表编辑器之前,首先得了解注册表的,例如注册表的显示方式、主键与子键、键值项数据的类型等等。

注册表显示方式
系统中,注册表是采用“关键字”及其“键值”来描述登录项及其数据的。所有的关键字都是以“HKEY”作为前缀开头。实际上,“关键字”是一个句柄。这种约定使得系统及应用程序的开发人员,可以在使用注册表中的API函数时把它用于应用程序的开发中。为此,提供了若干API函数,以便在开发 for 应用程序时添加、修改、查询和删除注册表的登录项。

在注册表中,关键字可以分为两类:一类是由系统定义的,一般都称为“预定义关键字”;另一类是由应用程序定义的,由于安装的应用软件不同,其登录项也就不同。在系统中,打开注册表编辑器,可以看到注册表中的关键字。

 注册表通过主关键字(最上层的为“根键”,例如:HKEY_CURRENT_USERS就是一个根键,标题栏上也有显示)和子键来管理各种信息,下图中的“Keyboard Layout”是一个主键,展开后就可以看到它里面的子键。注册表中的所有信息是以各种形式的“键值项数据”保存下来,如下图中的键值项Attributes的数据为“REG_DWORD:0”。其中“REG_DWORD”是该键值的数据类型;“0”是代表该键值被赋予的数值。

  在注册表的左边窗口中,所有的数据都是通过一种树状结构,以键和子键的方式组织起来,十分类似于资源管理器内的目录结构。每个键都包含有一组特定的信息,每个键的键名都是与它所包含的信息相关的(注册表内是以英文的方式出现,比如‘Control Panel'表示的是控制面板内的一些内容)。

  如果这个键包含子键,则在注册表编辑器窗口的左边出现一个“+”号,用来表示在这个文件夹内还有好多内容。如果这个文件夹被用户打开了,那么“+”号就变为“-”号,与我们使用资源管理器的方法是一样的。

注册表中的“键值数据项”的类型
  在注册表中,“键值项数据”可分为下面三种类型。

二进制(BINARY)
  在注册表中,二进制是没有长度限制的,可以是任意个字节的长度。在注册表编辑器中,二进制数据以十六进制的方式显示出来,如:“CustomColors”的键值就是一个二进制数据,双击键值名,出现“编辑二进制数值”对话框,我们可以在二进制和十六进制之间进行切换。

  DWORD值(DWORD)
  DWORD值是一个32位(4个字节,即双字)长度的数值。在注册表编辑器中,你将会发现系统以十六进制的方式显示DWORD值,在编辑DWORD数值时,可以选择用二进制、十进制或是十六进制的方式进行输入。
字符串值(SZ)

  在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成。下图文本输入栏中的内容即为一个键值,它是一种字符串值类型。通过键值名、键值就可以组成一种键值项数据,这就相当于Win.ini、System.ini文件中小节下的设置行。其实,使用注册表编辑器将这些键值项数据导出后,其形式与.ini文件中的设置完全一样。
注册表数据类型

  注册表的键中包含着各种不同格式的数据。数据类型可以这样来分类:
  通用数据类型--RegEdit、RegEdt32及其它绝大多数注册表工具都支持,并能够对之进行编辑的数据类型。
   NT 专用数据类型--RegEdt32和另外几个注册表工具支持,并能够对其进行编辑的数据类型。
  组件/应用程序专用的特殊数据类型--注册表工具支持这些数据类型,但是对于程序而言是有限度的。
  用户则只能将其作为二进制数进行编辑。
  实际上,注册表工具也可以对不支持的数据类型进行编辑,包括那些显示为REG_UNKNOWN类型的数据。但是编辑仅能在二进制模式下进行,这就需要用户对数据对象的格式非常了解。对于那些需要手工修改注册表的用户来说,理解每一种数据类型以及每一种类型数据的存储格式是非常重要的。

现有注册表数据类型
 类 型    类型索引   大 小      说 明

REG_BINARY    3    0~多个字节  可以包含任何数据的二进制对象颜色描述

REG_COLOR_RGB  *   4字节     颜色描述

REG_DWORD    4   4字节     DWORD值

REG_DWORD_BIG_ENDIAN 5 4字节   一个DWORD值的逆序存储形式

REG_DWORD_LITTLE_ENDIAN 4 4字节  DWORD值

REG_EXPAND_SZ   2   0~多个字节 包含环境变量的字符串

REG_FILE_NAME  *    0~多个字节 文件名

REG_FILE_TIME  *    未知    文件

REG_FULL_RESOURCE_DESCRIPTOR 9 未知 硬件资源列表

REG_LINK   6      0~多个字节 命名一个符号链接(symbolic link)的Unicode串

REG_MULTI_SZ 7 0~多个字节 以null字符分隔的字符串集合,集合中的最后一个字符串以两个null字符结尾

REG_NONE 0 未知 REG_NONE类型的对象无须分类,它与REG_UNKNOWN类型不同

REG_RESOURCE_LIST 8 未知 设备使用的资源列表

REG_RESOURCE_REQUIREMENTS_LIST  10  未知   驱动程序要求的资源列表

REG_SZ   1   0~多个字节 以一个null字符线的字符串

REG_UNKNOWN  (未定义) 未知  因为数据类型索引无效而无法确定的对象类型

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《windows注册表-3、 注册表数据结构6
本文地址:https://www.zhiletu.com/archives-2313.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微