当前位置:文档之家› 注册表基本知识

注册表基本知识

注册表基本知识注册表是Windows XP系统存储关于计算机配置信息的数据库,包括系统运行时需要调用的运行方式的设置;软、硬件的有关配置和状态信息,应用程序和资源管理器外壳的初始条件、首选项和卸载数据;计算机整个系统的设置和各种许可,文件扩展名与应用系统的关联,硬件的描述、状态和属性;计算机性能记录和底层系统状态信息,以及其他各类数据。

这里我们就介绍一下注册表的基本概念、结构和相关的初级知识,为读者进一步深入了解注册表做好铺垫。

1.1 注册表的由来PC机及其操作系统得一个特点就是允许用户按照自己的要求对计算机系统的软件和硬件进行各种各样的配置。

早期的图形操作系统,如Windows 3.X中,对软硬件工作环境的配置是通过对扩展名为INI的文件进行修改来完成的。

Windows 3.X在启动时是通过许多初始化文件来加载16位实模式和32位虚拟模拟设备驱动程序(VxD)的。

例如,要启动Window 3.X,必须有WINI.INI,SYSTEM.INI及其各种配套的INI文件。

但INI文件管理起来很不方便,因为每种设备或应用程序都得有自己的INI文件,并且在网络上很难实现远程访问。

早期的Window 3.X应用程序不仅自己有专门的初始化文件,而且在WIN.INI中往往还要增加一些配置项,时间长了,WIN.INI不断增大。

而且WIN.INI的许多配置项一直遗留着,一般用户无法删除。

随着WIN.INI的增大,Window 3.X运行速度也相应地降低。

另外,WIN.INI 不能超过64KB,否则Window 3.X无法启动,或运行程序中会出现许多莫名其妙的错误。

由于INI文件的最大长度是64KB,所以是系统扩展的一个很明显的障碍。

为了解决这个问题,许多开发商后来都开始向用户提供自己的INI文件,并仅在WIN.INI文件和SYSTEM.INI文件中列出指向自用INI文件的一个指针。

但这种方法也有不足:INI文件会散布在系统的各个地方,而且分级访问的本质存在严重的缺陷。

如果WIN.INI做了某一特殊的设置,而应用程序的INI文件又做出了另一个设置,那么究竟选择谁?如何判定一种具体的设置的优先级呢?为了克服上述这些问题,在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。

按照这一原则,Windows 各版本中都采用了将应用程序和计算机系统全被配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性,以及各种状态信息和数据等。

Windows XP的注册表在结构上可以说是Windows 2000与Windows 9X/Me注册表的综合体,含有以上两种注册表的大量信息,同时也有大量最新的设置特点。

Windows XP注册表保存着操作系统正常运转所需的大部分信息。

在每次启动时,系统会根据计算机关机时创建的一系列文件创建注册表,注册表一旦载入内存,就会被一直维护着。

注册表实际上是一个系统参数的关系数据库,从很多方面来看,它是Windows XP计算机行为和能力的数据交换中心。

注册表代表一系列数据文件,主要用于帮助Windows XP对硬件、软件、用户环境以及Windows 的“外观与感觉”进行控制。

注册表与INI文件的不同之处有如下几点:●注册表采用了二进制形式登录数据。

●注册表支持子项(键),各级子关键字都有自己的“值项(键值)”。

●注册表中的键值项可以包含可执行代码,而不是简单的字串。

●在同一台计算机上,注册表可以存储多个用户的特性。

1.2 注册表的特点和功能注册表也有大小和限制,不可能无限大。

用户可能收到一条消息说注册表以及太大,所剩配额不多,以致无法满足当前的分配请求。

除非用户改变它,否则注册表大小被设置为页面池大小的25%。

对大多数的计算机而言,页面池的大小大约等于已安装内存的数量,最大可至192MB。

可将注册表设置为页面池大小的80%。

Windows XP将依据当前已安装的内存数量来调整注册表的大小。

虽然绝大多数用户将发现默认值对于使用来说是可接受的,但仍有若干个注册表项将影响注册表的大小。

为了创建非常大的注册表,需确保安装的内存数量足够大,并设置注册表中的RegistrySizeLimit 和PagedPoolSize项。

Microsoft将存储在注册表数据向中的任何对象的大小限制在1MB以内。

这条限制基本上只对REG_BINARY对象有意义,因为字符串和其他对象不可能有这么大。

如果用户需要存储超过1MB的注册表对象,那么就有必要在一个文件中存储该信息并在注册表中存储一个指向这个文件的指针。

没有这条限制,注册表将很容易成为系统中最大的文件。

Windows XP操作系统合应用程序都在Windows XP注册表中存储数据。

这既有好处又有坏处。

好处是注册表是一个高效的公共存储区域,坏处事,越来越多的应用程序和系统在注册表中存储信息,注册表就越来越庞大。

注册表的特点如下:●注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置,这使得修改某些设置后不用重新启动计算机成为可能。

●注册表中登记的硬件部分数据可以支持高版本Windows的即插即用特性。

当Windows检测到机器上的新设备时,就把有关数据保存到注册表中。

另外,还可以避免新设备与原有设备之间的资源冲突。

●管理人员和用户通过注册表可以在网络上检查系统得配置和设置,使得远程管理得以实现。

概括地说,注册表大致分为以下两大功能:●注册表是连接操作系统合硬件、驱动程序的数据库。

这是因为在XP中,注册表是作为保存驱动程序所有设置及位置的数据库来使用的。

这个数据库的内容包括了许多东西,像驱动程序的位置、存放地址、版本号等信息。

有了这些针对各种设备的信息,就可以通过驱动程序使用相应的设备了。

没有它,操作系统就没法管理硬件。

●注册表也是操作系统与应用程序关联的数据库。

当我们启动一个应用程序时,注册表就会像操作系统提供与这个应用程序有关的资料,以便找出这个应用程序,设置准确的数据文件的位置以及启动其他必要的设置。

实际上,还不仅仅只有这些。

注册表保存的信息还包括默认数据、附属文件位置、菜单、工具栏、窗口状态以及其他选项。

另外,还有软件的安装日期、用户、版本号,有时还包括一个序列号。

1.3 注册表的结构在安装了大量应用程序以后,注册表会变得非常庞大,为了避免降低系统的性能,注册表中的信息以二进制格式保存,而不像Windows 3.X的INI文件或者MS-DOS系统文件那样以文本格式保存。

1.3.1 注册表基本元素使用注册表编辑器(REGEDIT.EXE)打开注册表,就可以看出它的结构,如图1.1所示。

注册表的结构由配置单元(hive key)、项(key)、子项(subkey)和值(value)组成,它们是不同的注册表数据类型。

Windows XP注册表分为4层,而且呈层叠式的树状结构。

图1.1 注册表的树状结构●配置单元:有5个系统定义的配置单元,它们名称的第1部分是:HKEY_。

●项:分为用户定义的项和系统定义的项。

这些项没有特殊的命名约定,它们以主HKEY_配置单元的子目录形式存在。

项没有附带数据,它只负责组织对数据的访问。

●子项:分为用户定义的子项和系统定义的子项。

这些子项没有特殊的命名约定,它们作为用户定义或系统定义的项的子目录形式存在。

子项没有相关的数据,他们知识用来组织对数据的访问。

●值:这些元素位于结构链的末端,就像是文件系统中的文件一样。

它们包含着计算机及其应用程序执行时使用的实际数据。

它们可分为小而有效的几种数据类型。

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

在Windows XP 系统中,打开注册表编辑器,可以看到注册表中的项。

注册表通过配置单元、项(最上层的也称为“根键”,例如,图 1.2中所示的HKEY_CURRENT_USER就是一个根键,标题栏上也有显示)和子项来管理各种信息,其中的Control Panel是一个主键(项),展开后就可以看到它里面的子键(项)。

注册表中的所有信息是以各种形式的“键值项数据”保存下来,如图1.2中的键值项Opened的数据(值)为“REG_DWORD:0x00000001”。

其中,“REG_DWORD”是该键值项的数据类型;“0x00000001”代表该键值被赋予的数值。

图1.2 配置单元下的项及其值项注册表中包含副本——例如,用户会注意到在HKEY_CURRENT_USER中的所有数据也都包含在HKEY_USERS配置单元中。

但这并非相同数据的不同两套,只是同一数据有两个名字。

Windows XP需要让注册表的部分内容同时在两处出现,但又不想复制这些部分,因为这样会带来更新方面的问题。

实际上,系统对注册表部件创建了别名或者说另一个名字。

别名指向原始部件,并在原始部件更新时更新。

这些别名由Windows独自创建,作为用户,不能在注册表中创建别名。

1.3.2 HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE(HKLM)是包含操作系统及硬件相关信息(例如,计算机总线类型、高级电源管理、系统可用内存、浮点处理器、串口、超文本终端、数字协处理器、当前安装了哪些设备驱动程序以及启动控制数据等)的配置单元。

实际上,HKEY_LOCAL_MACHINE保存着注册表中的大部分信息,因为另外有两个配置单元都是其子项的别名。

由于这些使者是针对那些使用Windows系统的用户而设置的,是一个公共配置信息,所以它与具体用户无关。

说明:配置单元通常简写成HK机上它们以下划线分隔的单词的首字母。

该配置单元下面包含了5个子项,分别担当一定的功能。

1.HARDWARE子项该子项包含了系统使用的浮点处理器、串口等有关信息。

在它下面存放一些有关超文本终端、数字协处理器和串口等信息。

HARDWAR子项又包含4个子项。

ACPI:有关高级电源管理的设置信息。

DESCRIPTION:用于存放有关系统信息。

DEVICEMAP:用于存放设备映像。

RESOURCEMAP:用于存放系统资源映像。

2.SAM子项这个子项主要包含安全账户管理器(Security Accounts Manager)使用的信息。

Windows XP不具有服务器的功能,在Windows 2000 Sever作为域控制器时,使用这个子项保存用户和组的信息,以便在目录服务的恢复模式下使用。

域控制器维护在活动目录中的用户和组信息的安全,对于域中的其他计算机无法使用这些信息。

这个子项中的信息被系统保护起来,在Windows XP Professional和Home Edition下都无法查看。

相关主题