搜索

最新评论

友情博客

RSS

我的 Blog:
a5197 最新的 20 条日志
[创新设计]
[资源共享]
[谈谈今天]
[别出心栽]
[娱乐推荐]
[精选文章]
全站 Blog:
全站最新的 20 条日志
 
注册表内幕

注册表的内部结构

Windows操作系统的一个最大特点就是容许用户按照自己的要求对计算机系统的硬件和软件进行灵活配置,为此引入了注册表,注册表是 Windows  的一个内部数据库,是一个巨大的树状分层的数据库。它记录了用户安装在机器上的软件和每个程序的相互关联关系;它包含了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备。
     注册表中存放着各种参数,直接控制着 Windows  的启动、硬件驱动程序的装载以及一些 Windows  应用程序的运行,从而在整个系统中起着核心作用。
它包括:
    
(1)软、硬件的有关配置和状态信息,注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据。
     (2)联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性。
     (3)性能记录和其它底层的系统状态信息,以及其它数据。
     如果注册表受到了破坏,轻者使 Windows  的启动过程出现异常,重者可能会导致整个系统的完全瘫痪。因此正确地认识、使用,特别是及时备份以及有问题时恢复注册表,对Windows用户来说就显得非常重要。
    注册表的外部形式是Windows目录下的两个二进制文件System.dat和User.dat,内部组织结构是一个类似于目录管理的树状分层的结构,如下图所示:

    其基本结构包括:根键、子键、键值名称及键值数据。
注册表的根键主要包括六大根键,即:
    HKEY_LOCAL_MACHINE、HKEY_USERS
    HKEY_CURRENT_USER
    HKEY_CLASSES_ROOT
    HKEY_CURRENT_CONFIG
    HKEY_DYN_DATA
    这六大根键就象硬盘上的根目录一样,其名称是固定不便的,其中主要的是HKEY_LOCAL_MACHINE和HKEY_USERS两大根键,它们是注册表的核心,HKEY_LOCAL_MACHINE对应着System.dat文件,HKEY_USERS对应着User.dat文件,


    另外的四个根键都是它们的派生。系统中其他的硬件和软件配置数据都相应的存在于它们之下。

注册表文件(*.reg)

REG文件是传统的更新注册表的途径,其主要的原因在于可以很容易地使用文本编辑器或注册表编辑器的导出功能创建 REG 文件,导入信息时只需双击即可。
    典型的 REG 文件由文件头和文件体构成,文件扩展名为“ .reg ”。
    文件头由两行组成,第一行必须为“REGEDIT4”,第二行必须为一空行。如果无文件头或缺少一行,则注册表编辑器不会导入该文件中的信息,但也不会报告错误信息。
    文件体由若干段构成,每一段对应一个注册表键及其值,段与段之间用空行隔开,每段格式如下所示:
    [ 注册表键路径 ] 如:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows”
    “值名称”=值数据 如:“键值1”=“我是键值1”。
    值数据如果为字符串,则等号后边为双引号引住的数据;如果为双字型,等号后边则为:word:数据; 如果为二进制,等号后边则为:hex:数据。如果要设置默认值的数据,则等号前边的值名称为:@,并且没有双引号。
    下边是一个注册表文件的实例:本例先在“HKEY_LOCAL_MACHINE\SOFTWARE”键下建立一个子键“MySoft”,并将其默认值设为“我是默认值”;然后再在其下建立一个子键“MyApp”,并设默认值为“我是一个子键”,增加三个键值,值名称分别为“键值1”、“键值2”、“键值3”,数据类型分别为 字符串、双字、二进制,数据分别为“我是键值1”、00000001、00 11 22 33。

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\MySoft]
@="我是默认值"

[HKEY_LOCAL_MACHINE\SOFTWARE\MySoft\MyApp]
@="我是一个子键"
"键值1"="我是键值1"
"键值2"=dword:00000001
"键值3"=hex:00,11,22,33

  注册表根键详解

HKEY_LOCAL_MACHINE: 注册表的核心,计算机的各种硬件和软件的配置均存在于此。它包括以下八个部分,每部分中又包括许多子键:Config配置、Driver驱动程序、Enum即插即用、Hardware硬件、Network网络、Security安全、Software软件、System系统

      Config键:包括一个或多个子键,例如 0001,0002等等,每一个子键均代表一个硬件配置文件。它下设Display,Enum,Infrared,Software和System子键,祥情见HKEY_CURRENT_CONFIG。
    
Driver键:驱动程序
    
Enum键:包括安装在机器上的每种设备的配置数据,其内容随不同的机器也不同。它对应多个子键:
        
⑴、BIOS:包括多种集成在主板上的设备,每个设备是一种EISA的格式(如 *PNP0001)。Microsoft分配一定的范围给某些设备类型,如下表:

范 围

说 明

范 围

说 明

PNP0000-PNP0004

中断控制器

PNP0100-PNP0102

系统计时器

PNP0200-PNP0202

DMA控制器

PNP0300-PNP0313

键盘控制器

PNP0400-PNP0401

打印机端口

PNP0500-PNP0501

通信端口

PNP0600-PNP0602

硬盘控制器

PNP0700

标准软盘控制器

PNP0800

系统扬声器

PNP0900-PNP0915

显示适配器

PNP0930-PNP0931

扩展总线

PNP0940-PNP0941

扩展总线

PNP0A00-PNP0A04

扩展总线

PNP0B00

CMOS时钟

PNP0C01

系统板扩展

PNP0C02

保留

PNP0C04

数学协处理器

PNP0E00-PNP0E02

PCMCIA控制器

PNP0F01

Microsoft串行鼠标

PNP0F00-PNP0F13

鼠标端口

PNP8000-PNP8FFF

网络适配器

PNPA030

CDROM控制器

PNPB000-PNPBFFF

其它控制器

 

 

        ⑵ESDI:指示硬盘类型及驱动器字符等。
         ⑶FLOP:指示软盘驱动器。
         ⑷HTREE:不包括任何设备,其下的RESERVER子键保留了保存在设备管理中的资源列表。
         ⑸ISAPNP:ISA即插即用设备。
         ⑹INFRARED: 红外线接口,可以看到每一个连接到这个端口上的虚拟设备的子键。
         ⑺LPTENUM: 只有在并口上安装了即插即用的打印机时才存在。
         ⑻MF: 包括每个安装在计算机中的每个多功能设备的子键。
         ⑼MONITOR: 常包括一个单一的子键 .DEFAULT_MONITOR,指示当前的显示器。
         ⑽NetWork: 网络协议,通常可以看到如下子键:FASTIR-红外线协议,MSTCP-TCP\IP,VREDIR-MicroSoft网络客户,VSERVER-文件和打印机共享
         ⑾PCI: 包括每个PCI设备。
         ⑿PCMCIA:安装在计算机上的PC CARD设备。
         ⒀ROOT: 计算机检测出的或通过“添加新硬件”而未正确安装驱动程序的硬件。
         ⒁SCSI: 安装在计算机上的每个SCSI设备。
         ⒂SERENUM: 连接到串行接口上的设备。
         ⒃USB: 连接到USB接口上的设备。
         ⒄VPOWERD: 电源管理。
     HARDWARE键:计算机硬件配置中的一些不确定的信息。
    
NetWork键:包括安全提供者和当前的用户名及组策略等。
    
Security键:具有管理权限的每个用户和组。
     Software键:安装在计算机中的软件的设置。每个软件程序使用一种类似“公司名称\软件名称\软件版本”的组织形式,本部分的设置对于排除故障和定制系统很有用。
     System键:设备驱动程序等。
HKEY_USERS:用户设置。其内容取决于计算机是否激活了用户配置文件,若未激活用户配置文件,则可以看到称为.DEFAULT的单一子键,该子键包括和所有用户相关的各种设置,并且和\Windows下的USER.DAT文件相配合。若激活了用户配置文件并且正确地执行了登录,则还有一个“用户名”的子键,该用户名为用户登录的名称。
HKEY_CURRENT_CONFIG:
是HKEY_LOCAL_MACHINE\Config的快捷方式。
HKEY_DYN_DATA:
系统的动态数据。


 

 发表于 2005-12-21  [所属栏目:资源共享 | 返回首页]
小字体中字体大字体
评论(共 {Count} 条)
{CommentAuthor}:
{CommentTime}
{CommentUrl}
{CommentEmail}
{CommentIp}
{CommentContent}