免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2333 | 回复: 1
打印 上一主题 下一主题

注册表简介 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-15 00:57 |只看该作者 |倒序浏览
注册表是Windows系统的核心,它控制着Windows整个系统的运行,注册表到底是什么?本章将对这个问题展开全面的讨论,并为读者进一步操作注册表打下基础。
注册表(Registry)是Windows系统的一个核心数据库,它包含着系统的所有应用程序和软硬件的相关信息,从用户的角度看,注册表系统由注册表数据库和注册表编辑器两部分组成。

一.注册表概述
在Windows 95及其以后的版本中,微软推出了一种叫做注册表的数据库,它包含五大根键,控制着系统全部软硬件的运行。
1.注册表的重要性
注册表中存放着各种参数,直接控制着Windows的启动.硬件驱动程序的装载以及一些Windows应用程序的运行,在整个系统中起着核心作用,它包括:
A.软.硬件的有关配置和状态信息,应用程序和资源管理器外壳的初始条件.首选项和卸载数据。
B.联网计算机整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述.状态和属性。
C.性能记录和其他底层的系统状态信息,以及其他数据。
如果注册表受到破坏,轻者系统的启动出现异常,重者整个系统完全瘫痪,因此正确使用.及时备份和安全恢复注册表,对Windows用户来说非常重要。

2.注册表与ini文件的不同之处
⑴ 注册表采用了二进制形式登录数据。
⑵ 注册表支持子键,各级子关键字都有自己的数据。
⑶ 注册表中的键值项可以包含可执行代码,而不是简单的字符串。
⑷ 在同一台计算机上,注册表可以储存多个用户。

3.系统启动与注册表的关系
安装Windows系统时,安装程序扫描计算机的硬件配置,然后用扫描结果初始化注册表。同时,安装程序在系统盘的根目录下生成System.1st,因此平常不要随意更换硬件设备,以免系统无法启动。
说明:System.1st是注册表的原始备份文件。
下面通过对Windows系统工作过程的跟踪性描述,揭示操作系统如何使用注册表来启动计算机。
⑴ 启动计算机
启动时,Windows系统自动扫描计算机的硬件配置,并把扫描结果写入注册表,扫描结果包括CPU数量.RAM容量等配置信息。同时,系统更新每个设备的相关信息,包括设备所使用的资源(DMA.中断和I/O地址),然后,Windows系统利用注册表来配置计算机。
说明:配置过程主要包括初始化设备驱动程序,打开计算机的网络连接,以及启动相关的服务,如任务表等。
⑵ 登录Windows系统
在登录对话框中,用户输入自己的姓名和密码,通过系统验证后,操作系统将用户的设置加载到注册表中,操作系统使用户的设置保持相对独立,并且只在登录Windows系统时才加载相应的用户设置,每个用户的设置有:色彩格调.文件夹选项.开始菜单的排序和内容等。
⑶ 打开系统中的文件
双击文件时,操作系统根据文件的扩展名,在注册表中搜索适应的应用程序,然后打开文件。程序从注册表中不但读取本身的设置,而且也读取文件的配置数据,配置数据包括:字库信息.文件夹位置信息.用户的桌面等。
⑷ 安装应用程序
安装软件时,安装程序将软件的设置信息添加到注册表中,利用注册表下的软件配置数据,用户能够进行如下操作:双击可执行文件打开应用程序.使用"添加/删除程序"对话框卸载应用程序。同样重要的是,安装程序还添加相关设置,使应用程序的各个组件可以协同工作。

二.注册表的组织结构
Windows操作系统采用树状结构组织注册表,Windows各个版本的注册表管理器基本相似,下面以XP下的regedit管理器为例,分析注册表的组织结构。在(开始)菜单中打开(运行)项,输入"regedit",按回车键,即可打开注册表编辑器。
注册表的数据结构,主要包括注册表的显示方式.主键与子键.键值项数据的类型。
1.注册表显示方式
Windows系统中,注册表采用"关键字"和"键值"描述登录项及其数据,所有的关键字,都以"HKEY"作为后缀。关键字分为两类:一类是由系统定义的,称为"预定义关键字";另一类是由应用程序定义的,安装的应用软件不同,其登录项也就不同。在Windows系统中,打开注册表编辑器,可以看到注册表中的关键字,如图1所示。

                                    图1 注册表结构
2.键和值
注册表编辑器中的键可以分为三类:
⑴ 根键:注册表中共有5个根键,也叫子树,位于注册表层次结构的顶端。例如:HKEY_USERS就是根键。
⑵ 主键:在注册表中,主键相当于包含子键的文件夹,就像在Windows Explorer中文件夹包含有子文件夹一样。
⑶ 子键:子键是定义除根键外所有键的术语。两个键之间的父子关系很重要时,把父键叫做主键,另一个称为主键的子键。
如果说注册表编辑器中的根键是磁盘盘符,那么子键就是文件夹。实际子键有很多特性与文件夹相同,如可以嵌套。每个键都有相应的名称,就是所谓的值,在值区有三列:
⑴ 名称:每一个值有一个名称,名称在第1列。
⑵ 类型:第2列中值的类型表示值的数据类型。
⑶ 数据:第3列是每一个值包含的数据。
注册表通过主键(最上层的为"根键",例如上图中的HKEY_CURRENT_USER就是一个根键,标题栏上也有显示)和子键来管理各种信息,图2中的"Keyboard Layout"是一个主键,展开后可以看到里面的子键。注册表中的所有信息,以各种形式的"键值项:数据"显示在右侧窗口,如图2所示中的键值项Hotkey的数据为"REG_SZ:1"。其中"REG_SZ"是该键值的数据类型:"1"是该键值被赋予的数值。

                                    图2 键和值
在注册表的左边窗口,所有的数据通过一种树状结构,以键和子键的方式组织起来,类似于资源管理器内的目录结构。每个键都包含一组特定的信息,每个键的键名都与所包含的信息相关(注册表内键名以英文的方式出现,比如"Control Panel"表示的是控制面板内的一些内容)。
提示:如果这个键包含子键,则在注册表编辑器的左边出现一个"+"号,用来表示在这个文件夹内还有其他内容。如果打开这个文件夹,"+"号就变为"-"号,与使用资源管理器的方法相同。
3.数据类型
注册表中,"键值项数据"主要分为下面三种类型:
⑴ 二进制(BINARY)
二进制没有长度限制,可以是任意字节的长度,注册表编辑器中的二进制数据,以十六进制的方式显示,如图3所示中的"windows"的键值就是一个二进制数据。

                              图3 二进制数据
双击键值名"windows",出现(编辑二进制数值)对话框,可以在二进制和十六进制之间进行切换。
⑵ DWORD值
DWORD值是一个32位(4个字节,即双字)长度的数值,在注册表编辑器中,系统以十六进制的方式显示DWORD值。
编辑DWORD数值时,可以选择十进制或十六进制的方式进行输入,如图4所示。

                                图4 编辑DWORD值
⑶ 字符串值(SZ)
字符串值用来表示文件的描述.硬件的标识等,通常由字母和数字组成,如图5所示中文输入栏中的内容即为一个字符串类型的键值。

                              图5 编辑字符串值
提示:通过键值名.键值可以组成一种键值项数据,这相当于Win.ini,System.ini文件中小节下的设置行。
注册表的键包含各种不同格式的数据,数据类型可以这样分类:
A.通用数据类型:这种数据类型,RegEdit.RegEdt32及其他绝大多数注册表工具都支持,并能够对它进行编辑。
B.Windows NT专用数据类型:RegEdt32和另外几个注册表工具支持,并能够对其进行编辑的数据类型。
C.组件/应用程序专用的特殊数据类型:注册表工具支持这些数据类型,但是对于程序而言支持是有限度的,用户则只能讲其作为二进制数进行编辑。
注册表工具也可以编辑不支持的数据类型,但是仅能在二进制模式下进行,这就需要用户对数据对象的格式非常了解。如表1所示给出了现有的注册表数据类型。
类型                           类型索引   大小         说明
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~多个字节 命名一个符号链接(symboliclink)的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                    未定义  未知       因为数据类型索引无效而无法确定的对象类型

三.注册表的结构分析
Windows注册表是一个二进制的数据库,保存着系统和大型软件正常运行所需的绝大部分信息。每次启动时,根据上次关机时创建的一系列信息文件,Windows系统重新创建注册表。注册表是计算机的数据交换中心,因此需要了解注册表的结构及其根键.子键,这样才能避免盲目的修改。
1.HKEY_CLASSES_ROOT
HKEY_CLASSES_ROOT根键,保存操作系统所有的关联数据.类型标识以及鼠标右键的常规和扩展功能数据等。HKEY_CLASSES_ROOT主键与当前注册用户有关,它是HKEY_CURRENT_USER\Software\Classes和HKEY_LOCAL_MACHINE\SOFTWARE\Classes的交集。如果两者的内容有冲突,则HKEY_CURRENT_USER\Software\Classes优先。实质上HKEY_CLASSES_ROOT根键是HKEY_LOCAL_MACHINE\SOFTWARE\Classes主键的分支内容,打开HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINE\SOFTWARE\Classes,会看到它们具有相同的内容,如图6和图7所示。

                             图6 HKEY_CLASSES_ROOT主键

                         图7 HKEY_LOCAL_MACHINE\SOFTWARE\Classes
更改HKEY_CLASSES_ROOT或者HKEY_LOCAL_MACHINE\SOFTWARE\Classes中的任何一部分内容,系统都会自动对整个注册表相应的部分进行改动。
说明:HKEY_LOCAL_MACHINE\SOFTWARE\Classes独立作为一个根键,可见其在系统中的重要性。
2.HKEY_CURRENT_USER
HKEY_USERS根键下保存的是默认用户(.DEFAULT).当前登陆用户与软件(Software)的信息,因此HKEY_CURRENT_USER根键的内容和HKEY_USER根键下按SID列出的内容是相同的,它们之间任何一者的改动都会影响另一者。
3.HKEY_LOCAL_MACHINE
HKEY_LOCAL_MACHINE根键下包含了系统绝大多数应用软件的配置信息,这些设置与当前登录的具体用户无关。随着计算机中硬件配置和安装文件的不同,HKEY_LOCAL_MACHINE中的信息有很大的差别(在其他的关键字中也会反应出这种差别),HKEY_LOCAL_MACHINE下面各个子键中包含很多重复的信息,这样做的目的只是便于浏览和编辑。HKEY_LOCAL_MACHINE根键下共有五个子键,如图8所示。

                              图8 HKEY_LOCAL_MACHINE根键
图8的五个子键中,HARDWARE保存了计算机的所有硬件信息,SOFTWARE根键几乎所有的软件配置信息,SYSTEM下保存当前的系统信息,这三项内容都可以由用户修改和设置,对于SAM子键和SECURITY子键,由于他们保存的是Windows 2000 Server和Windows 2000 Advanced Server的系统安全信息,主要由Active Directory用户管理器进行管理,因此不能随便对它们进行修改或者设置。
⑴ HARDWARE子键
该子键下面存放一些有关超文本终端.数学协处理器和串口等信息。
⑵ SOFTWARE子键
SOFTWARE子键下列出了系统已安装的32位应用程序的设置信息,这一项随着安装软件的不同而不同,但总体结构是相似的。
A.Classes分支和HKEY_CLASSES_ROOT根键想的内容是一致的,都保存着相同的文件关联数据。
B.Microsoft分支子键保存系统所有与Microsoft相关的软件配置信息,如Internet Explorer.Microsoft Visual Studio.DevStudio等。
⑶ SYSTEM子键
SYSTEM子键保存着系统的启动信息和系统出现故障时的恢复信息,这些信息主要通过控制集的方法搜集和存储。SYSTEM子键有七个分支:CurrentControlSet.ControlSet001.ControlSet002.LastKnownGoodRecovery.MountedDevices.Select.Setup,CurrentControlSet子键和ControlSet001.ControlSet002子键保存内容是一致的。
A.Control子键包含了Windows控制面板中的各个功能模块的设置信息,一般情况下只需要在控制面板中对其进行间接的修改。
B.MountedDevices分支列出了系统中被加载的设备信息。
C.Select分支列出了系统启动时选择的控制集,通常会被保存为LastKnownGood制定的设置。
D.Setup分支列出了系统分区,设置状态以及和与系统设置进程有关的其他信息。
4.HKEY_USERS
HKEY_USERS根键下保存默认用户(.DEFAULT).当前登录用户与软件(Software)的信息,其中最重要的是.DEFAULT子键。.DEFAULT子键的配置针对新建用户,系统创建新用户时,首先读取.DEFAULT子键下的内容,然后创建用户的专用配置信息,该配置文件包括环境.屏幕.声音等多种信息。
说明:SID是当前登录用户的SID,用户管理器为网络内的每一位用户分配一个惟一的SID,用以标识用户,如图9所示。

                           图9 登录用户的SID
与默认用户相比,登录用户增加了5个附加的子键,分别是EUDC(缺省的EUDC字体设置).Printers(打印机设置).RemoteAccess(远程访问设置).SYSTEM(系统备份设置).Volatile Environment(可变环境设置)等。对于每一个用户SID,系统都会自动生成一个SID_CLASSES子键,用来保存该用户相关的系统类标识。对于用户来说,不必去修改这些标识,因为它们都是由系统直接维护的。
5.HKEY_CURRENT_CONFIG
HKEY_CURRENT_CONFIG根键下保存系统的当前硬件配置信息。如果Windows中设置了两套或者两套以上的硬件配置文件,则系统启动时将会让用户选择使用哪套配置文件。
⑴ Software子键列出了一些特殊硬件专用的软件和字体,在通常情况下很少出现。
⑵ System子键包括当前配置文件的专用设置,它下面的CurrentControlSet包括Control.Enum.Services三个分支:
A.Control子键包含控制面板中所激活的各项设置和硬件设备之间的差异,同时还有Class子键(列出了控制面板所使用的图标)和Print子键(列出了控制面板所安装的打印机设置)。
B.Enum子键下列出了涉及硬件设置文件许可的其他总线信息。
C.Services子键的具体内容和安装的硬件有关,根据不同硬件配置文件,Services子键显示已装载驱动程序的所有差异。
可用设备发生变化时,硬件配置文件指示Windows加载正确的驱动程序,使用硬件配置文件,可以在启动Windows时选择适当的配置环境。另外,使用硬件配置文件,也可以将系统恢复到最初安装Windows时的系统环境。

四.注册表的文件组成及保存位置
注册表文件的组成根据操作系统版本不同文件也有所不同,以Windows XP为例,Windows采用强大的数据文件Registry,它由六个文件组成:
⑴ 系统配置注册表文件system.dat:该文件描述单一的PC机的配置;即插即用的设备硬件配置,如:设备的I/O地址,IRQ中断请求和DMA通道等。
⑵ 用户平台配置注册表文件user.dat:该文件有隐含.只读.系统的属性,它定义用户平台配置的优先权,如用户平台配置等特定于某一个用户应用程序的安装信息。
⑶ 系统配置注册表备份文件system.da0:system.da0文件在Windows注册表system.dat文件被破坏时,自动复制为system.dat。
⑷ 用户平台配置注册表备份文件user.da0:user.da0是用户平台配置文件user.dat的备份文件。用户平台配置文件user.dat损坏时,将由user.da0自动复制为user.dat。
⑸ 网络注册表文件Config.po1:该文件主要用于Windows 98网络用户的管理策略。
⑹ 网络管理注册表备份文件Config.po0:Config.po0是Config.po1的备份文件,它被存放在网络服务器中。
Windows Me则比Windows XP操作系统多了一个CLASSES.DAT文件,Windows 9x/2000/NT中注册表文件的位置同Windows XP一样。

五.本章小结
本章主要介绍了Windows注册表的基本内容,包括注册表的来历,重要性和数据结构等,本章为大家进一步操作注册表打下基础。
注册表是Windows操作系统的大脑,它指挥着系统中所有进程的运行,注册表的每一个键都有其特殊的含义和功能,它们有机地结合在一起,为系统和用户提供服务。




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/44181/showart_360210.html

论坛徽章:
0
2 [报告]
发表于 2009-08-13 13:12 |只看该作者

回复 #1 juewu16 的帖子

好文章
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP