注册表的基本结构
- 格式:pdf
- 大小:166.16 KB
- 文档页数:7
Windows操作系统注册表的组成与分析-电脑资料和Windows9x一样,Windows NT也有注册表,。
注册表是保存系统配置的重要数据库,不过,与Windows 9x相比,它只包含五个部分:(1)HKEY-LOCAL-MACHINE:用于保存本机系统的信息,包含硬件与操作系统的数据,如驱动程序、系统配置信息等;(2)HKEY-CLASS-ROOT:用于保存与关联有关的信息;(3)HKEY-CURRENT-CONFIG:保存与当前的硬件配置文件有关的数据;(4)HKEY-CURRENT-USER:保存与当前登录的用户有关的环境设置的数据,包含桌面设置、网络连接等;(5)HKEY-USERS:保存当用户登录时,所有必须载入的用户配置文件数据,包含缺省的配置文件和登录者的环境配置文件。
另外,在WINNT中启动注册表编辑器,应该执行"开始/运行"命令,在"运行"对话框中输入REGEDIT32.EXE(而不是Windows 9x的REDEDIT.exe),并确定。
Windows Me注册表的组成与分析与Win 98不同,WinMe的注册表是由Windows目录下的Classes.dat、User.dat(用户配置信息)和System.dat(系统配置信息)三个二进制文件组成的,其"项值"与Win 98一样有字串值(REG_SZ)、二进制值(REG_BINARY)、双字节值(REG_DWORD)三种类型。
与Win 98相同,WinMe也有个注册表编辑器Windows\Regedit.exe(见图1),用来搜索或修改注册表。
WinMe注册表编辑器左边窗口中,最上面一层是"我的电脑",下面有6个分支:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG、HKEY_DYN_DATA,各分支的功能简要描述见表1。
注册表知识大全(基础篇)注册表是一个庞大的数据库,用来存储计算机软硬件的各种配置数据。
它是针对32位硬件、驱动程序和应用设计的,考虑到与16位应用的兼容性,在32位系统中仍提供*.ini文件配置方式,一般情况下,32位应用最好不使用*.ini文件。
注册表中记录了用户安装在计算机上的软件和每个程序的相关信息,用户可以通过注册表调整软件的运行性能,检测和恢复系统错误,定制桌面等。
用户修改配置,只需要通过注册表编辑器,单击鼠标,即可轻松完成。
系统管理员还可以通过注册表来完成系统远程管理。
因而用户掌握了注册表,即掌握了对计算机配置的控制权,用户只需要通过注册表即可将自己计算机的工作状态调整到最佳。
Windows注册表也是帮助Windows操作系统控制硬件、软件、用户环境和操作系统界面的数据信息文件,注册表文件被包含在Windows操作系统目录下的两个文件:system.dat和user.dat。
通过Windows操作系统目录下的regedit.exe程序能够存取注册表数据库。
在Windows 95以前的更早版本中,这些功能是靠win.ini,system.ini和其他的应用程序有关联的.ini文件实现的。
在windows操作系统序列里,system.ini和win.ini这两个文件包含了操作系统的所有控制功能和应用程序的信息,system.ini管理计算机硬件,win.ini管理桌面和应用程序。
所有驱动、字体、设置和参数会保存在.ini文件中,任何新程序都会被记录在.ini文件里。
这些记录会在程序代码中被引用。
因为受win.ini和system.ini文件大小的限制,程序员添加辅助的.INI文件以用来控制更多的应用程序。
举例来说,微软的Word有一个word.ini文件,它包含着选项、设置、缺省参数和其他关系到Word运行正常的信息。
在system.ini和win.ini 中只需要指出word.ini的路径和文件名即可。
window 注册表原理【最新版】目录1.注册表的概念与作用2.注册表的结构3.注册表的存储方式4.注册表的访问与修改5.注册表的备份与恢复正文一、注册表的概念与作用注册表(Registry)是 Windows 操作系统中的一个核心组件,它存储了操作系统、应用程序和用户设置的相关信息。
注册表的作用主要体现在以下几个方面:1.存储系统设置:注册表中包含了操作系统的各项设置,例如桌面、任务栏、控制面板等,用户可以通过修改注册表来个性化自己的操作系统。
2.存储应用程序信息:注册表中存储了安装在计算机上的应用程序的相关信息,包括名称、版本、安装路径等,方便用户管理和卸载。
3.存储用户设置:注册表中存储了用户的一些个性化设置,例如输入法、字体、快捷键等,用户可以根据自己的需求进行设置。
二、注册表的结构注册表是一个庞大的数据库,它包含了多个子键(Subkey),子键下又包含了多个值(Value)。
这些值可以是字符串、数字、日期等数据类型。
注册表的结构大致如下:1.HKEY_CLASSES_ROOT:存储了所有已安装的组件(如文件类型、OLE对象等)的注册信息。
2.HKEY_CURRENT_USER:存储了当前登录用户的设置信息,包括用户界面、系统参数等。
3.HKEY_LOCAL_MACHINE:存储了计算机硬件和软件的配置信息,包括设备驱动程序、系统服务等。
4.HKEY_USERS:存储了所有用户的默认设置和配置信息。
5.HKEY_DYN_DATA:用于动态链接库的注册和加载。
三、注册表的存储方式注册表的信息实际上是存储在硬盘上的一个二进制文件中,文件名为“registry.bin”。
在 Windows 操作系统启动时,系统会将该文件加载到内存中,从而实现对注册表的快速访问。
四、注册表的访问与修改用户和应用程序可以通过注册表编辑器(RegEdit)来访问和修改注册表中的信息。
以下是访问和修改注册表的方法:1.打开注册表编辑器:点击“开始”按钮,输入“regedit”并回车,即可打开注册表编辑器。
一、注册表的结构划分及相互关系WINDOWS的注册表有六大根键,相当于一个硬盘被分成了六个分区。
在“运行”对话框中输入RegEdit,然后单击“确定”按钮,则可以运行注册表编辑器。
虽然在注册表中,六个根键看上去处于一种并列的地位,彼此毫无关系。
但事实上,HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG 中存放的信息都是HKEY_LOCAL_MACHINE中存放的信息的一部分,而HKEY_CURRENT_USER中存放的信息只是HKEY_USERS存放的信息的一部分。
HKEY_LOCAL_MACHINE包括HKEY_CLASSES_ROOT和HKEY_CURRENT_USER中所有的信息。
在每次系统启动后,系统就映射出HKEY_CURRENT_USER中的信息,使得用户可以查看和编辑其中的信息。
实际上,HKEY_LOCAL_MACHINE\SOFTWARE\Classes就是HKEY_CLASSES_ROOT,为了用户便于查看和编辑,系统专门把它作为一个根键。
同理,HKEY_CURRENT_CONFIG\SY-STEM\Current Control就是HKEY_LOCAL_MACHINE\SYSTEM\Current Control。
HKEY_USERS中保存了默认用户和当前登录用户的用户信息。
HKEY_CURRENT_USER中保存了当前登录用户的用户信息。
HKEY_DYN_DATA保存了系统运行时的动态数据,它反映出系统的当前状态,在每次运行时都是不一样的,即便是在同一台机器上。
根据上面的分析,注册表中的信息可以分为HKEY_LOCAL_MACHINE和HKEY_USERS两大类,这两大类的详细内容请看后面的介绍。
二、六大根键的作用在注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于目录结构。
每个键都包含了一组特定的信息,每个键的键名都是和它所包含的信息相关的。
注册表详解1.注册表的定义:PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置。
早期的图形操作系统,如Win3.x中,对软硬件工作环境的配置是通过对扩展名为.ini的文件进行修改来完成的,但INI文件管理起来很不方便,因为每种设备或应用程序都得有自己的INI文件,并且在网络上难以实现远程访问。
为了克服上述这些问题,在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。
按照这一原则,Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。
2. 注册表的文件:注册表不是一个虚无的概念,在操作系统中,它最终要落实在某些具有”物理实在”意义的文件上.实际上,注册表的数据正是存储在某些特定文件中,在windows 9x中,他主要包含在windows目录下的system.bat和user.bat两个文件中(windows me还包含了classes.bat文件).这些文件无法进行直接编辑,读取和修改注册表文件中的配置信息,必须通过windows文件夹下的regedit.exe程序来进行,所以regedit.exe程序就被称为”注册表编辑器”但在windows2000/xp/vista下的注册表文件,都被称作”配置单元”,所谓的配置单元,其实就是注册表中的一组项,子项,和值,所有的配置文件(除了HKEY_CURRENT_USER以外)都位于windows\system32\config\文件夹中, HKEY_CURRENT_USER的配置文件位于windows\profiles\username\文件夹中,其中最重要的个文件没有扩展名,他们分别是:DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM; .SAV后缀的文件为注册表的备份文件. .EVT 文件为系统日志文件.4.注册表的结构:注册表中的信息纷繁复杂,但是注册表对配置信息的组织结构确实层次分明的:打开注册表编辑器,左边窗格中的”我的电脑”下面显示的五大分支称为”预定义项”也就是我们常说的”根键”.”预定义项”代表了注册表一个主要部分的项.五大预定义项各自包括若干”项”,”项”下面又包含众多的”子项”,”子项”下面又包含众多的”子项”子向右边的窗口里包含若干的”值项”,也就是我们常说的”键值”注册表的结构如图5. 注册表的数据类型:注册表的值项包含多种不同的数据类型,WINDOWS XP的早期版本注册表只有三种键值的数据类型:字符串,二进制值和双字节值; windowsxp的晚期版本\2003增加到5种; VISTA/WINDOWS7又增加了一个QDWORD(64位)类型,实际的数据类型还要多很多,知识系统不允许我们来创建.*. 字符串值: 类型:REG_SZ*. 二进制值: 类型:REG_BINARY*. DWORD值: 类型:REG_DWORD*. 可扩展字符串值: 类型:REG_EXPAND_SZ*. 多字符串值: 类型:REG_MULTI_SZ6. 注册表预定义项拆解:注册表有五大预定义项,各自包含了不同的内容,同时彼此之间又有很大的紧密联系,了解五大预定义项包含的内容和其下面的主要项的功能,对于从整体上理解注册表的应用很有帮助.一.H KEY_CLASSER_ROOTRoot预定义项包含了启动应用程序所需的全部信息,其中包括:1.所有扩展名以及应用程序和文档之间的关联信息.2.所有驱动程序的名称3.当做指针的字符串,指向他们代表的实际文件4.类标识CLSID预定义项ROOT下面的项非常多,但是不要担心有多么的复杂.实际上,在这么多项中,大部分的项结构是一样的.1.*项这是HKEY_CLASSER_ROOT非常特殊的一项,*代表应用于所有文件类的定义,比如安装了WINRAR,后所有文件的右键菜单都有”添加到压缩文件”与之关联,如果按一般的方法去与所有文件关联,那就太麻烦了,而*项就具有简单完成关联所有文件类型的功能,只要在此项下添加类定义信息,可应用于所有类型的文件.2.扩展名项(如.bat等)HKEY_CLASSER_ROOT中最主要也是最多的想就是形如.bat .avi .bmp等扩展名项,以及它们所代表的batfile avifile bmpfile等类定义项,这两种项相互配合,完成对系统中所有文件扩展名的识别以及对此种扩展名文件的类型的定义(图标,用什么程序打开等).3.类定义项(batflie等)类定义项的名称必须和扩展名相的默认值定义的相同.否则它们就会直接失去联系.也就无法完成对文件的关联定义了.4.类定义项下的Defaulticon子项(例如batflie\Defaulticon):该类文件图标的路径和文件名.5.类定义项下的shell\open子项OPEN子项用来描述关联程序的显示名称,比如右键的”打开””编辑”等默认值缺省时,系统会自动将其程序的名称信息显示为打开,为不是OPEN如果设置.OPEN 下面的子项是COMMAND子项,用来关联指定打开该类型文件软件的路径.如果路径是长文件名(超过8个字符)则应该用””括起来,比如: “%SystemRoot%\system32\SoundRecorder.exe”如果关联的程序在WINDOWS文件夹, windows\SYSTEM32文件夹或者windows\SYSTEM内的话,则省略其路径,如C:\WINDOWS\NOTEPAD.EXE在与文件关联的话可直接写成”NOTEPAD.EXE”6.CLSID(类标识符)项:在注册表中,经常会看到长串字符的子项和值,比如:{00209FF-0000-00000-C000-xx-000000000046}它们都指向HKEY_CLASSER_ROOT\CLSID分支,既”类标识符”子项.这些CLSID究竟有什么用,可以做个试验:在桌面上建立一个文件夹,命名为控制面板.{21EC3AE2020-A-1069-A2DD-08002B30309D},可以发现文件夹变成了控制面板的图标,双击可以打开控制面板,这就是CLSID的功能,在WINDOWS中应用程序,控件,WINDOWS部件,编译器等几乎所有的项目都有他自己的CLSID, CLSID是某个不见于操作系统的连接,而且每一个程序的CLSID的值都是唯一的,,这样就可以保证此类文件的请求总是连接到改程序上面.7.DIRECTORY, DRIVE, FOLDER项(文件夹项)文件夹其实是一种特殊的文件对象,也需要关联程序才能对其操作,在ROOT根键下,关于文件夹的项目有3个,在操作时很容易混淆,下面是各项分别代表的文件夹类型(以上三个子项一般不要改动,了解一下即可):DIRECTORY: 仅作用于一般文件夹.(C:\windows; D:\穿越火线.等等)Drive: 仅作用于驱动器.(A: E:等)Folder: 作用与所有文件夹(以上两种以及,回收站,我的电脑,控制面板这样的特殊文件夹)以上三个项的结构和”类定义项”相同,我们可以为他们设置关联程序以及默认图标.二.H KEY_CURRENT_USER该预定义项包括了当前登录用户的配置信息,用户的文件夹,屏幕颜色和控制面板的设置都存储在这里,这些信息与用户的配置文件相关联.HKEY_CURRENT_USER(以下缩写为HKCU)包含如下主要的项:1.HKCU\Appevent项:Appevent项及其子项定义了系统特定的时间的名称已经发生该事件时的声音提示.HKCU\Appevent\Schemes下有两个子项APP(系统附带声音方案的具体设置)和NAMES(系统附带和用户自定义的声音方案)2. HKCU\console项:定义了命令提示符(CMD窗口)的一些特征.3. HKCU\Control panel项:里面配置的内容很多,全部是控制面板内的大部分设置,都保存在此项中,包括扶住功能选项,显示器,鼠标,屏保等信息.4.HKCU\Environment项:系统以及其他用户的临时文件存放目录5.HKCU\EUDC项:保存当前用户的字库用户使用造字程序所造的字库的位置信息保存在这个项的子项键值中.6.HKCU\Identities项:OUTLOOK配置信息.7.HKCU\KEYboard Layout项系统键盘的布局信息8.HKCU\PRINTERS项:打印机的配置信息9.HKCU\Sessioninformation项:该项下面有一个”PROGRAMCOUNT”键值项,设置为0偶可以禁止所有登录用户运行的程序数量.10.HKCU\sofeware项:包含了系统附带的各种软件以及安装在电脑中的其他软件的设置信息,都保存在这里,是应用最多的项之一.三.H KEY_LOCAL_MACHINE:该预定义项包含了特定于计算机的配置信息(用于任何用户),一下缩写为HKLM,他有5个独立的项.1.HKLM\HARDWARE项:其中包含了含有计算机硬件信息的子项,在每次重启系统时, HARDWARE项都将被重新创建,这样就很容易向系统中添加新硬件了,用户对此项的修改没有任何的意义也不会生效.2.HKLM\SAM项:这是一个关于安全账号管理的项,其中存储着用户信息和域的信息,无论哪种注册表,SAM中的信息都是不可访问的.3.HKLM\SECURITY项:这里的信息与本地安全性和用户权限有关,其中也含有SAM项的备份,也是无法访问的.4.HKLM\SOFTWARE项:包含了已经安装的系统软件和用户软件信息,也是注册表中最经常用到的项.5.HKLM\SYSTEM项:包含了系统启动,设备驱动程序,服务,和WINDOWS配置有关的信息.四.HKEY_USERS:该项包含计算机上的所有以活动方式加载的用户配置文件,HKEY_CURRENT_USERS其实也算是HKEY_USERS的一个子项.(一下缩写为HKU).1.HKU\.DEFAULT项:此项的作用是未来将要创建的新用户将针对此项内的设置来生成新的配置文件,包括环境,屏幕,声音等多种信息.2.HKU\S-1-5-18等项:分别代表系统内的各个账户或者安全组的信息.HKU\S-1-3-0:对应ADMINISTRA TORS账户HKU\S-1-5-18: 对应CREATOR OWNER账户(操作系统使用的服务账户)HKU\S-1-5-19:对应当前登录到系统中的所有用户HKU\S-1-5-20:对应网络服务组(network和Network Service)HKU\S-1-5-21-XXXXXXXXXXXXXX-XXXXXXXX(根据每台电脑不同,数字也是随机的):对应当前正在使用的账户.五.H KEY_CURRENT_Config该预定义项包含有关本地计算机在系统启动时使用的硬件配置文件的信息.,若果当前计算机中只有一个硬件配置,则其中的数据是和HKEY_LOCAL_MACHINE 中一样.如果用户有建立新的硬件配置的话,则可以再这里反映出来.(一般用户使用中是不会有弟2个硬件配置的,故此项使用的很少).。
注册表基础知识注册表是Windows操作系统中的一个核心部分,它包含了系统所有的配置信息和数据。
这些信息控制着系统的各项功能和应用程序的运行方式。
掌握注册表基础知识对于深入了解Windows操作系统和解决一些常见的系统问题是非常有帮助的。
注册表由五个主要部分组成:根键、子键、键值、数据类型和注释。
这些部分共同构成了注册表的复杂结构。
根键:根键是注册表的最顶层,它定义了其他键的分类。
例如,HKEY_CURRENT_USER根键包含了当前登录用户的所有配置信息。
子键:在根键下,可以创建多个子键,每个子键都包含了一类特定的信息。
例如,在HKEY_CURRENT_USER根键下,可以有一个名为"Software"的子键,用于存储应用程序的配置信息。
键值:键值是注册表中的具体数据,它们定义了系统或应用程序的行为方式。
每个键值都有一个名称和一个值。
数据类型:每个键值都有一个特定类型的数据,例如字符串、二进制、DWORD(32位无符号整数)等。
注释:注释是对键值的描述,它们提供了关于键值的额外信息。
注册表在Windows操作系统中扮演着非常重要的角色。
它存储了系统的配置信息、用户的个人信息、应用程序的配置和设置等。
这些信息对于系统的运行和应用程序的执行都是至关重要的。
如果注册表出现问题,可能会导致系统崩溃、应用程序无法运行或出现错误。
因此,维护注册表的完整性和准确性是非常重要的。
由于注册表的重要性,我们需要采取一些措施来保护它。
以下是一些建议:定期备份注册表:备份注册表可以在出现问题时恢复到之前的状态,避免数据丢失。
避免随意修改注册表:不熟悉注册表的人应该避免随意修改它,以防止出现问题。
如果需要修改注册表,应该先备份当前的状态。
计算机病毒是一种恶意软件,它能够复制自身并且在计算机网络中进行传播,从而破坏数据、干扰计算机操作,甚至危害网络安全。
其中,修改Windows操作系统注册表是病毒常用的一种手段,下面就对这一原理解析如下:Windows注册表是Windows操作系统的一个核心组件,它存储了系统配置信息、应用程序设置、硬件配置和用户偏好等数据。
注册表概述【简介】注册表一直是Windows系统的核心配置文件,在系统中起着举足轻重的作用,一旦注册表出现问题,整个系统将变得混乱甚至崩溃。
一:注册表的结构注册表是层次结构的数据库,由以下嵌套容器和数据组成:子树----根目录或者层次结构的主要部分;项----子树下的主要子容器。
项可以包含子项或项值子项----子女项项值----影响系统的实际数据。
项值在注册表编辑器右边的面板中显示。
HKEY---子树符号,设计者认为根目录是“到项的句柄”。
HandleTo KEY的简写1:蜂巢和蜂巢文件物理上,注册表是一系列文件,被称为“蜂巢(hive)”。
一个hive是注册表一个组成部分(项,子项和项值的特定部分),作为一个文件出现在计算机上。
蜂巢文件(因与蜂巢单元结构相似性而命名),只能在注册表编辑器中显示或修改。
但它可以复制到任何地方,即手工备份的方法。
以“.dat”文件形式保存,并且每个文件都有一个对应的“.log”日志文件,它是主.dat文件的事务日志。
本质上,注册表就是一个LDAP。
(轻量级目录访问协议服务)注册表本身在HKEY_LOCAL_MACHINE\System\CurrentCtrolsetControl\Hive List上保留蜂巢文件记录。
当观察这个列表时,会找到一些有意思的数据项。
首先,硬件项有个列表,但是在数据面板中没有蜂巢文件被命名。
这是因为硬件项是在启动过程中从头创建的。
文件收集生成项所需要的信息----操作系统并不从蜂巢文件中取回信息。
第二,文件的路径格式,它是\Device\HarddiskV olume1\windows\system32\config\<filename>。
这个格式给出了一个线索,即指出了在操作系统启动过程中windows访问该信息的地方。
操作系统直到完全进入启动过程后,才读取或分配驱动器字母,所以这是windows找到这个位置的唯一方法。
2:蜂巢文件在计算机上的位置和内容蜂巢文件磁盘文件HKEY_LOCAL_MACHINE\Sam windows\system32\config\SamHKEY_LOCAL_MACHINE\security windows\system32\config\securityHKEY_LOCAL_MACHINE\software windows\system32\config\softwareHKEY_LOCAL_MACHINE\system windows\system32\config\systemHKEY_CURRENT_CONFIG windows\system32\config\systemHKEY_CURRENT_USER c:\documents 和setting\ <username>\Ntuser.datH KEY_USERS\.Default c:\ documents 和setting\ default user\Ntuser.dat计算机配置和缺省用户设置的注册表数据在windows中被保存在下面这五个文件中:DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,NTUSER.DAT。
注册表的结构在中文Windows 系统中,注册表采用“关键字”及其“键值”来描述登录项及其数据。
所有的关键字都是以“HKEY”作为前缀开头。
实际上,“关键字”是一个句柄。
这种约定使得系统及应用程序开发人员可以在使用注册表API函数时把它用于应用程序的开发之中。
为此,中文Windows 提供了若干个Win32 API 函数,以便在开发中文Windows 应用程序时添加、修改、查询和删除注册表的登录项。
在注册表中,关键字可以分为两类:一类是由系统定义的,通常称为“预定义关键字”;另一类是由应用程序定义的,安装的应用软件不同,其登录项也就不同。
1. HKEY_CLASSES_ROOT该主关键字(或称为“根键”)包含了有关的OLE信息,以便在系统工作过程中实现对各种文件和文档信息的访问,如图1-4所示。
其具体的内容有已经注册的文件扩展名、文件类型、文件图标等。
2.HKEY_USERSPC用户都可以在这里设置自己的关键字和子关键字,根据当前登录的用户不同,这个关键字又可以指向不同的分支部分。
这个分支部分将映射到HKEY_CURRENT_USER主关键字中,用户根据个人爱好设置的诸如桌面、背景、开始菜单程序项、应用程序快捷键、显示字体、屏幕节电设置等信息均可以在这个关键字中找到。
该主关键字中的大部分设置都可以通过“控制面板”来修改,如果用户登录到系统中的信息没有预定义的登录项,则采用该关键字下面的“.Default”子关键字。
3.HKEY_CURRENT_USERHKEY_CURRENT_USER主关键字是一个指向HKEY_USERS结构中某个分支的指针,它包含当前用户的登录信息,实际上它就是HKEY_USERS\.Default下面的一部分内容。
如果在HKEY_USERS\.Default下面没有用户登录的其他内容,那么这两个主关键字包含的内容是完全相同的。
4.HKEY_LOCAL_MACHINE该主关键字包含了本地计算机(相对网络环境而言)的硬件和软件的全部信息,如图1-9所示。
当系统的配置和设置发生变化时,本关键字下面的登录项也将随之改变。
5.HKEY_CURRENT_CONFIG这个主关键字实际上也是指向HKEY_LOCAL _MACHINE\Config结构中的某个分支的指针,如图1-10所示。
HKEY_CURRENT_CONFIG下面的子关键字及内容与HKEY_LOCAL _MACHINE\Config\0001分支下面的子关键字及内容是完全相同的。
该主关键字包含的主要内容是计算机的当前配置情况,如显示器、打印机等可选外部设备及其设置信息等,而且这个配置信息均将根据当前连接的网络类型、硬件配置以及应用软件的安装不同而有所变化。
6. HKEY_DYN_DATA顾名思义,该主关键字包含了系统运行中的动态数据,即已发生的事件的有关信息,如图1-11所示。
因此,这个主关键字的内容不仅包含系统硬件的当前状态,也包含了那些需要更新和检索的数据。
这些数据都是动态变化的,它们总是最新的信息。
中文Windows 98每次启动时都将重新建立这个主关键字。
为了提高工作速度,HKEY_DYN_DA TA实际上是存放在内存(RAM)中的,因此,如果发生了对于注册表内容的修改,则不必立即写入磁盘,这对于提高系统的速度是十分必要的。
在注册表中经常出现双重入口(分支),例如,有一些在HKEY_CLASSES_ROOT中的键同样会在HKEY_LOCAL_MACHINE中出现,如果这些相同的分支出现在两个不同的根键中,那么哪个根键有效呢?注册表的子键都有严格的组织。
如果相同的信息出现在超过一个的子键中,假如你只修改了一个子键,那么该修改是否作用于系统依赖于该子键的等级呢?一般来说,系统信息优先于用户等级。
例如,一个设置项同时出现在HKEY_LOCAL_MACHINE和HKEY_USER子键中,通常由HKEY_LOCAL_MACHINE中的数据起作用。
要注意的是,这种情况只发生在你直接编辑注册表时。
如果你从“控制面板”中更改系统配置,则所有出现该设置项的地方均会发生相应的改变。
例如,你可以通过注册表设置文件关联,即将一个带有特殊后缀的文件连接到一个应用程序上。
在注册表中,有4个子键都保存了文件管理的数据,它们分别是HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE和HKEY_USER。
在缺省情况下,所有后缀为1ST 的文件都被连接到记事本程序(Notepad)上。
如果你在Windows资源管理器双击该后缀的文件,系统将激活记事本,同时将此文件调入编辑。
但是你也可将此文件关联从Notepad改为Lotus Ami Pro(这也是一个字处理程序),则你在双击后缀为1ST的文件时将激活Lotus Ami Pro程序,同时编辑此文件。
但是,如果你在直接编辑注册表时只修改一个子键,则会出现如下4种情况:(1) 如果只修改HKEY_CLASSES_ROOT中的1ST项,则在双击1ST后缀的文件时将激活Lotus Ami Pro。
(2) 如果只修改HKEY_CURRENT_USER中的1ST项,则在双击1ST后缀的文件时将激活Notepad。
(3) 如果只修改HKEY_LOCAL_MACHINE中的1ST项,则在双击1ST后缀的文件时将激活Lotus Ami Pro。
(4) 如果只修改HKEY_USER中的1ST项,则在双击1ST后缀的文件时将激活Notepad。
在上面的例子中,HKEY_CLASSES_ROOT子键和HKEY_LOCAL_MACHINE子键看起来在控制文件关联上相互独立,这似乎有些自相矛盾,但是,要知道HKEY_ CLASSES_ROOT 根键就是HKEY_LOCAL_MACHINE\Software\Classes,因此,改变HKEY_CLASSES_ROOT根键就是改变HKEY_LOCAL_MACHINE。
注册表通过主键(最上层的为“根键”)和子键来管理各种信息。
但是,注册表中的所有信息是以各种形式的“键值项数据”保存下来,如图在注册表的左窗格中,所有的数据都是通过一种树状结构以键和子键的方式组织起来的,十分类似于目录结构。
每个键都包含了一组特定的信息,每个键的键名都是和它所包含的信息相关的。
如果这个键包含子键,则在注册表编辑器窗口中代表这个键的文件夹的左边将有“+”符号,以表示在这个文件夹中有更多的内容。
如果这个文件夹被用户打开了,那么这个“+”就会变成“-”.在注册表编辑器右窗格中保存的都是“键值项数据”。
在注册表中,“键值项数据”包含“键值名”(即“名称”栏下面的部分)与“键值”(即“数据”栏下面的部分),如图在注册表中,“键值项数据”可分为如下三种类型(在右窗格内右击鼠标,则在弹出的快捷菜单中将可以看到这三种类型,如图(1)字符串值在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。
通常它由字母和数字组成,最大长度不能超过255个字符。
在图1-20中,“D:\pwin98\trident”即为键值名“a”的键值,它是一种字符串值类型的。
同样地,“ba”也为键值名“MRUList”的键值。
通过键值名、键值就可以组成一种键值项数据,这就相当于Win.ini,System.ini文件中小节下的设置行。
其实,使用注册表编辑器将这些键值项数据导出后,其形式与.INI文件中的设置行完全相同了。
(2)二进制值在注册表中,二进制值是没有长度限制的,可以是任意个字节长。
在注册表编辑器中,二进制以十六进制的方式显示出来.在图中,键值名“wizard”的键值“80 00 00 00”就是一个二进制值数据。
双击键值,在“编辑二进制值”对话框中,在编辑框的左边输入十六进制数时,其右边将会显示相应的ASCII 码。
(3)DWORD值DWORD值是一个32位(4个字节,即双字)长度的数值。
在注册表编辑器中,你将发现系统会以十六进制的方式显示DWORD值,在编辑DWORD数值时,可以选择用十进制还是16进制的方式进行输入..注册表以类似磁盘上的目录和文件那样的层次结构进行组织,如图2-3所示。
表2-1详细地解释了图2-3中的各个层次项的含义。
表2-1 上图中的各个层次项的含义层次说明子树 子树(又称为“子树关键字”,而在Windows 95/98下称为“根键”)类似于磁盘上的根目录。
注册表有如下4个预定义的子树:●HKEY_LOCAL_MACHINE●HKEY_USERS●HKEY_CURRENT_USER●HKEY_CLASSES_ROOT配置元 一个配置元是关键字、子关键字和键值项的分离体。
每个配置元具有一个相应的文件和.LOG文件。
.LOG文件用于保证自动发生关键字值的改变。
这些文件放在目录\winnt\SYSTEM32\CONFIG中关键字和子关键字 关键字和子关键字类似于Windows 3.x中“文件管理器”(File Manager)或Windows 95/98中“Windows资源管理器”中看到的目录结构,每个配置元都可以包括关键字和子关键字,这就像目录可以包含子目录一样键值项 键值项类似层次末端的文件,关键字和子关键字可以包括一个或者多个键值项。
键值项主要由键值名、数据类型和值三部分组成,其格式为:键值名:数据类型:值续表 层次说明值数据类型 Windows2000中的值数据类型包含如下5种:●REG_DWORD:只允许一个值,并且为1~8个16进制数据串●REG_SZ:只允许一个值,并且作为存储的串来解释●REG_EXPAND_SZ:类似REG_SZ,只是文本可包含替换的变量●REG_BINARY:只允许一个值,是16进制数字串,每对作为一个字节值来解释●REG_MULTI_SZ:允许多个值,每个值作为MULTI_SZ的一个成分图2-3注册表与Windows 3.x中的.INI文件有许多相似之处。
关键字类似于.INI文件的小节,一个键值项对应于一个.INI文件中小节里一条设置项。
然而,注册表可以包含子关键字,而.INI文件不支持小节的嵌套。
注册表中的键值项还可以包含可执行代码,而在.INI文件中设置项只是简单的串。
另外,在同一台计算机上有多个用户,注册表可以存储每个用户的特性,而.INI文件中却不可能。
1 HKEY_LOCAL_MACHINE该子树存放包括有关本地机器的所有配置信息及硬件、操作系统的数据等,如系统内存、驱动程序、安全数据库、系统配置等信息,这个子树不管哪个用户登录以及使用什么软件而保留机器的信息。
在这个子树中的信息由应用程序、设备驱动程序和Windows 2000操作系统使用,以确定本地机器的配置数据。