注册表.docx
《注册表.docx》由会员分享,可在线阅读,更多相关《注册表.docx(38页珍藏版)》请在冰豆网上搜索。
注册表
注册表
入门指南
什么是注册表与注册表的作用
注册表(Registry)是微软公司从Windows95系统开始(至目前最新Win2000系统依然使用的是它),引入用于代替原先Win32系统里.ini文件,管理配置系统运行参数的一个全新的核心数据库。
在这个数据库里整合集成了全部系统和应用程序的初始化信息;其中包含了硬件设备的说明、相互关联的应用程序与文档文件、窗口显示方式、网络连接参数、甚至有关系到计算机安全的网络享设置。
它与老的win32系统里的ini文件相比,具有方便管理,安全性较高、适于网络操作等特点。
在形式上,注册表与INI文件有两个显著的特点:
1.注册表采用的是二进制形式登录数据,INI文件采用的则是简单的文本形式登录数据
2.注册表支持子关键字,各级子关键字都有自己的“键值”,INI文件中则支持节以及节中的参数。
在功能上,注册表与.INI文件相比,主要有以下三个特点:
1.注册表允许对硬件、某些操作系统参数、应用程序和设备驱动程序进行跟踪配置,这使得某些配置的改变可以在不重新启动系统的情况下立即生效。
2.注册表中登录的硬件部分数据可以用来支持Win95的即插即用特性。
当Win95检测到机器上的各种设备时,就把有关数据保存到注册表中。
通常是在安装时进行这种检测的,但Win95启动或原有配置改变时,也要进行检测。
如安装一个新的硬件时,Win95将检查注册表,以便确定哪些资源已被占用,这样就可以避免新设备与原有设备之间的资源冲突。
3.通过注册表,管理人员和用户可以在网络上检查系统的配置和设置,使得远程管理得以实现。
预定义关键字。
注册表采用“关键字”及其“键值”来描述登录项及其数据。
所有的关键字都是以“HKEY”作为前缀开头。
实际上,关键字是一个句柄。
这种约定使得应用程序开发人员可以在使用注册表API时把它用于程序之中。
为此,Win95提供了若干API函数,以便在开发Win95应用程序时添加、修改、查询和删除注册表的登录项。
关键字可以分为两类:
一类是由系统定义的,通常称为“预定义关键字”;另一类是由应用程序定义的,安装的应用软件不同,其登录项也就不同。
由于注册表保存的信息中,含有许多系统启动时必要的参数,一旦出现问题将导致系统崩溃等严重后果,此外由于注册表里含有许多的无法通过操作系统本身进行操作的系统参数,因此了解并学会使用注册表,对每一个老鸟来讲都是一件不可缺少的事。
注册表编辑工具Regedit
Regedit.exe是微软提供的一个用于编辑注册表的工具,它为所有windows系统自带,因此可以说是最通用的注册表编辑工具。
由于Windows系统没有提供运行这个应用程序的菜单项,因此必须手动启动它,启动方法很简单:
首先打开'开始菜单(Start)'里的'运行(Run)'菜单项,如图一所示在对话框中输入regedit并点确定。
这时将出现regedit的主界面,如图二所示:
Regedit这个工具可以对注册表进行添加修改主键、键值,备份注册表,局部导入导出注册表等操作。
将注册表中的所有内容导出到一个文本文件中
1.在注册表编辑器中单击“我的电脑”将导出所有注册表信息,或者单击一个文件夹仅仅导出该文件夹下内容的注册信息;
2.在“注册表”菜单上单击“导出注册表文件”;
3.单击“浏览”为导出的文件寻找一个存储位置,即文件夹,然后为之输入一个文件后保存。
这样导出的注册表信息文件,可以在任何一种文本编辑器中编辑。
添加主键:
1.打开注册表列表,找到要添加主键的文件夹;
2.右击要加入主键的文件夹;
3.将鼠标指向“编辑”菜单下的“新建”,然后单击“主键”;
4.新的主键是以一个临时名字显示的,为新的主键输入一个名字,然后回车即可;如果添加新的主键后,导致了计算机不能正确启动的情况,可以恢复注册表信息。
添加键值
1.打开注册表列表,选中要添加新键值的文件夹;
2.右击要添加新键值的文件夹;
3.将鼠标指向“新建”,然后单击需要添加键值的类型。
这些类型包括“字符串值”、“二进制值”和“DWORD”值;
4.新添加的键值以一个临时键值显示,为新添加的键值输入一个新的值,然后回车即可
REGEDIT的命令格式:
功能:
引入注册表文件和导出注册表文件
REGEDIT[/L:
system][/R:
user]filename1
REGEDIT[/L:
system][/R:
user]/Cfilename2
REGEDIT[/L:
system][/R:
user]/Efilename3[regpath]
其中:
/L:
system指定system.dat文件的存放位置。
/R:
user指定user.dat文件的存放位置。
filename1指定引入到注册表数据库的文件名。
/Cfilename2指定形成注册表数据库的文件名。
/Efilename3指定导出注册表文件的文件名。
regpath指定导出注册表文件的开始关键字(缺省为全部关键字)
保存注册表信息的文件
在win95或win98系统中,注册表的组成从物理上来讲,实际上是由两个分别名为user.dat及system.dat的具有隐藏只读属性的二进制系统文件。
在system.dat文件中保存有计算机上现有安装软件的信息,已发现的硬件以及其配置信息。
User.dat则了保存与用户相关的信息,包括个性化设置(包含颜色,显示属性,鼠标,字体等等)访问性设置、国家区域设置等。
而在最新的Win2000系统中情况则有所不同。
同Windows9X一样,Windows2000的注册表也分为两个部分,但包括多个文件,其中用户配置文件保存在根目录“DocumentsandSettings”下用户名的目录中,包括两个隐藏文件:
NTUSER.DAT、NTUSER.INI及ntuser.dat.LOG日志文件。
系统配置文件位于Windows2000系统目录下的“SYSTEM32\CONFIG”中,包括DEFAULT、SOFTWARE、SYSTEM、AppEvent.Evt、SecEvent.Evt、SysEvent.Evt等多个隐藏文件及其相应的.LOG(日志)文件和.SAV文件。
这些注册表文件在Windows2000运行时无法使用其它工具打开,这一点与Windows9X下的system.dat及user.dat不同。
注册表结构分析
呵呵,进入关键所在了。
要想玩转注册表,不弄清楚注册表的结构可不行!
下面是摘自各个大虾的对注册表结构的精华论述。
HKEY_CLASSES_ROOT
该主关键字包含了有关的OLE信息,以便在系统工作过程中实现对各种文件和文档信息的访问。
具体的内容有已经注册的文件扩展名、文件类型、文件图标等。
HKEY_USERS
PC用户都可以在这里设置自己的关键字和子关键字。
根据当前登录的用户不同,这个关键字又可以指向不同的分支部分。
这个分支部分将映射到HKEY_CURRENT_USER关键字中。
用户根据个人爱好设置的诸如桌面、背景、开始菜单程序项、应用程序快捷键、显示字体、屏幕节电设置等信息均可以在这个关键字中找到。
本关键字中的大部分设置都可以通过控制面板来修改。
如果用户登录到系统中的信息,没有预定义的登录项,则采用本关键字下面的“Default”子关键字(如图2)。
HKEY_CURRENT_USER
HKEY_CURRENT_USER是一个指向HKEY_USERS结构中某个分支的指针,它包含当前用户的登录信息。
实际上它就是HKEY_USERS\Default下面的一部分内容,如果在HKEY_USERS\Default下面没有用户登录的其它内容,那么这两个主关键字包含的内容是完全相同的。
HKEY_LOCAL_MACHINE
该关键字包含了本地计算机(相对网络环境而言)的硬件和软件的全部信息。
当系统的配置和设置发生变化时,本关键字下面的登录项也将随之改变。
HKEY_CURRENT_CONFIG
这个关键字实际上也是指向HKEY_LOCAL_MACHINE\Config结构中的某个分支的指针。
HKEY_CURRENT_CONFIG下面的子关键字及内容与HKEY_LOCAL_MACHINE\Config\0001分支下面的子关键字及内容是完全相同的。
本关键字包含的主要内容是计算机的当前配置情况,如显示器、打印机等可选外部设备及其设置信息等,而且这个配置信息均将根据当前连接的网络类型、硬件配置以及应用软件的安装不同而有所变化。
HKEY_DYN_DATA
顾名思义,本关键字包含了系统运行中的动态数据-即已发生的事件的有关信息。
因此这个关键字的内容不仅包含系统硬件的当前状态,也包含了那些需要更新和检索的数据。
这些数据都是动态变化的,它们总是最新的信息。
WIN95每次启动时都将重新建立这个关键字。
为了提高工作速度,HKEY_DYN_DATA实际上是存放在内存(RAM)中的,因此如果发生了对于注册表内容的修改,则不必立即写入磁盘。
这对于提高系统的速度是十分必要的
1、HKEY_CLASSER_ROOT
该份之下至少包括100个关键字,这个分支下主要包括OLE数据,还包括文件扩展名和文件或应用程序的关联,改变改分支中的数据结构和内容将直接影响到系统软件的应用,此下的信息都被保存在system.dat文件中。
2、HKEY_USER
在这个关键字下显示的信息都保存在User.dat文件中,这包含了与具体用户有关的desktop(桌面)配置、网络连接以及start菜单。
如果用户的计算机被配置为使用户的配置文件,那么系统就会为每个用户都创建一个单独的User.dat文件。
当一个用户登录到计算机上时,Windows98将读取那个用户的user.dat文件,并把该文件放入内存中的Registry中。
3、HKEY_CURRENT_USER
它是适用于当前用户的HKEY_USER部分。
如果只有一个用户,即确省用户,那么HKEY_USER\.Default和HKEY_CURRENT_USER是相同信息的不同的显示方式。
4、HKEY_LOCAL_MACHINE
这是针对计算机硬件以及安装的软件所设定的分支。
如果计算机有多个硬件配置,那么每个配置的信息都保存在这里。
如果你察看一下该分支下的SOFTWARE下面的信息,你会发现生产已安装软件的公司的名字都在这儿了,这个分支为关于每个公司产品的与具体机器有关的信息存放提供一个方便的地方。
在这儿,你还可以发现应用程序名字、版本数、应用程序路径名以及以及硬件设置。
Microsoft也使用这个分支注册它的软件。
5、HKEY_CURRENT_CONFIGURATION
在这里用户可以找到显示设置情况和使用的打印机。
6、HKEY_DYN_DATA
这里保存了Windows操作性能参数的数据,当Windows98加载后,该信息被保留在RAM中,同时被不断更新。
下面是各个子键的比较详细的介绍,看了上面还不满足的朋友请看,:
)
HKEY_CLASSES_ROOT关键字
该关键字由多个子关键字组成,具体可分为两种:
一种是已经注册的各类文件的扩展名,一种是各种文件类型的有关信息。
图1左窗格中的子关键字就是各种已经注册的文件扩展名。
注册表内登录的文件扩展名中,一部分是系统约定的扩展名,另一部分是由应用程序自定义的扩展名。
应用程序只有把自定义的扩展名登录到注册表中,系统才能识别和关联使用有关的文档,即只有经过注册的扩展名,系统才能自动关联。
当选中某个扩展名关键字时,在窗口的右窗格中将显示出有关的键值。
例如在图1里选中“.avi”时,从其键值可以看出,对该扩展名将默认为动画文件(avifile)。
在HKEY_CLASSES_ROOT关键字中也包含了该类型文件的详细信息。
仍然以avifile文件为例,移动滚动条可以找到子关键字“AVIFile”,选中AVIFile可以看到其键值默认为“视频剪辑”,表示可以对.avi文件进行编辑、播放等操作。
单击AVIFile左边的“+”号,可以看到如图2所示的树型子关键字。
第一个子关键字是“CLSID”,即“分类标识”,在选中它时可以看到其默认的键值,如图3所示。
系统可用这个标识号来识别相同类型的文件。
在HKEY_CLASSES_ROOT主关键字下也有一个子关键字“CLSID”,其中包含了所有注册文件的类标识。
因此也可以通过类标识来查找相关文件的各种信息。
图4即是通过类标识查找AVIFILE文件的例子。
可以看到在该标识字下面还有10个子关键字,它们的键值也同样表示了AVIFILE文件的有关信息。
下面我们把AVIFile的全部子关键字展开,来看看它包含了哪些有关的信息。
展开全部子关键字后的窗口如图5所示。
“Compressors”(压缩程序)下面的两个子关键字“auds”和“vids”分别给出了音频和视频数据压缩程序的类标识,通过这些类标识可以找到相应的处理程序。
“DefaultIcon”的键值为:
“c:
\pwin95\mplayer.exe,3”,表示文件的默认图标是mplayer.exe文件中提供的第3号图标。
把“DefaultIcon”的键值改为:
“c:
\pwin95\mplayer.exe,4”,则采用图6中的第4号图标作为.avi文件的图标。
“Extensions”的作用是通过文件扩展名识别数据文件。
它的3个子关键字中,AVI表示AVI文件,AV和WAV表示音频文件。
“Insertable”是插入表。
“protocol”包含了执行程序和编辑程序的路径和文件名。
打开“StdExecute”(标准执行程序)下面的子关键字“Server”,可看到键值为:
“c:
\pwin95\mplayer.exe/avi”,即指定了执行程序的路径和文件名。
打开“StdFileEditing”(标准文件编辑程序)下面的子关键字“Server”,可看到键值仍然为:
“c:
\pwin95\mplayer.exe/avi”,即编辑程序的路径和文件名。
“verb”下面的3个子关键字0、1、2键值表示程序的工作状态,分别为“播放”、“编辑”和“打开”。
“RIFFHandlers”表示相关文件句柄,包含了AVI和WAVE文件的类标识。
“shell”包含了执行“打开”和“播放”命令的程序路径和文件名。
它们在各自的“command”中列出的键值分别为“c:
\pwin95\mplayer.exe%1”和“c:
\pwin95\mplayer.exe/play/close%1”。
“shellex”中包含了“多媒体文件属性表”(AviPage)的文件句柄。
下面我们再结合修改快捷方式图标来说明如何使用注册表修改显示信息。
1.打开注册表编辑器,在HKEY_CLASSES_ROOT关键字下滚屏找到与快捷方式有关的子关键字“lnkfile”并选中它。
如图7所示。
2.键名“IsShortcut”表示在桌面的快捷方式图标的左下角标注一个向上的小箭头,即,如果你不喜欢这个小箭头,可以采用下面的方法删除它:
选中“IsShortcut”,然后打开“编辑”菜单,单击“删除”命令,将该项删除。
关闭注册表并重启Win95,你将发现快捷方式图标上已经没有小箭头了。
3.键名“NeverShowExt”表示在快捷方式图标下不显示文件扩展名。
如果你希望显示扩展名,可以采用下面的方法把该键名改为“AlwayShowExt”:
单击“NeverShowExt”,打开“编辑”菜单,单击“重命名”命令,输入新名。
关闭注册表并重启Win95。
你会发现快捷方式图标上已经加上扩展名了。
HKEY_CURRENT_USER关键字
从图8中可以看到,HKEY_CURRENT_USER下面有7个子关键字。
其中除“RemoteAccess”外,其余6个都为系统预定义。
AppEvents登录已注册的各种应用事件
ControlPanel与控制面板设置有关的内容
InstallLocationsMRU安装路径的有关信息
keyboardlayout键盘设置信息
Network网络设置信息
RemoteAccess此项是安装IE4.0建立的子关键字,包含该应用程序的有关信息
Software软件的有关信息
1.AppEvents子关键字
AppEvents子关键字包含了各种应用事件的列表。
其下面又包含两个子关键字EventLabels(按字母顺序列表)和Schemes(按事件分类列表)。
从图9可以看出,Schemes是按照应用(Apps)和命名(Name)对事件进行分类的。
在本系统中,Apps共分为Default(缺省)、Explorer(资源管理器)、Mplayer(媒体播放器)和NortonNavigator(笔者安装的应用程序);Name一般情况下均采用Windows缺省值。
在“控制面板”中打开“声音”对话框,你可以看到这些事件的中文列表,其内容与按照应用(Apps)来对事件分类的列表是一一对应的。
2.ControlPanel子关键字
该子关键字所包含的内容与桌面、光标、键盘和鼠标等设置有关。
改变它们的键值就将改变对应的工作环境或参数。
图10为ControlPanel的结构。
在图10中可以看到,ControlPanel下面又有8个子关键字。
根据系统配置和设置情况的不同,子关键字的数目也会不同。
例如有的系统中没有“Mouse”关键字,并不是表示计算机中没有安装鼠标,而是指你从来没有对鼠标作过任何设置,系统完全采用默认值。
虽然ControlPanel中的键值与环境和特性有直接关系,但很多参数的改变并不要求用户通过修改注册表来实现,而只需通过“控制面板”即可进行修改。
也有一些环境特性的改变只能通过修改注册表来实现,例如,改变菜单的弹出延迟时间。
在Win95中,系统默认的菜单弹出延迟时间为400ms(随机器的性能不同,实际感觉到的延时可能有一定误差)。
如要改变其缺省值,可在注册表编辑器的\HKEY_CURRENT_USER\ControlPanel\desktop中增加一个键值名“MenuShowDelay”,通过改变其键值来改变菜单显示延时(如图10所示),键值的设定范围为0~1000(ms)。
Accessibility
这个子关键字包含了如图11所示的10个子关键字,多数子关键字在“控制面板”中都有对应的项。
这些子关键字的键值名中一般都有一个“On”,当键值为0时,表示设置无效;键值为1时,表示设置生效。
Appearance
这个子关键字的键值中列出了可供选择的各种颜色和图案。
可以在“控制面板”的“显示/外观”对话框的“方案”下拉菜单中,看到这些颜色和图案的中文名称。
cursors
这个子关键字的键值中列出了光标图案所在的文件路径。
可以在“控制面板”的“鼠标/指针”对话框的“方案”下拉菜单中,看到这些颜色和图案的中文名称并进行设置。
desktop
这个子关键字的键值中列出了桌面和窗口中的各种部件,如:
窗口边界、标题、图标、菜单、滚动条、消息框的长度、宽度和字体等数据。
这些数据可以在“控制面板”的“显示/外观”对话框的“项目”下拉菜单中进行修改。
下面再举一个只能通过修改注册表来实现的例子。
系统缺省设置,窗口在最小化和还原(或最大化)之间切换时,有一个平滑的变化过程(动画效果)。
要取消这个动画效果,可以在\HKEY_CURRENT_USER\ControlPanel\desktop\windowmetrics中增加一个键值名“MinAnimat”,其键值设置为0即可。
注:
为0为取消动画效果,非0则保留动画效果。
InputMethod
这个子关键字的键值中登录了“输入方法”转换热键的有关数据。
这些数据你可以在“控制面板”中打开“输入法”对话框中的“热键”标签进行修改。
International
这个子关键字的键值中登录了表示“上午”和“下午”的数据。
这些数据可以在“控制面板”中打开“区域设置”对话框中的“时间”标签进行修改。
keyboard
这个子关键字的键值中登录了击键时的重复延时和重复速率。
这些数据可以在“控制面板”中打开“键盘”对话框中的“速度”标签进行修改。
Mouse
这个子关键字的键值中登录了鼠标的双击速度和指针的移动速度。
这些数据可以在“控制面板”中打开“鼠标”对话框中的“按钮”和“移动”标签进行修改。
上面以AppEvents和ControlPanel这两个子关键字为例作了比较详细的讨论,限于篇幅,对其他子关键字就不再详细介绍了。
读者可以按照前面所列出的子关键字的基本内容自己进行分析。
HKEY_LOCAL_MACHINE关键字
图12中,HKEY_LOCAL_MACHINE下面的子关键字有8个。
其中“.mp2”是安装播放软件“XINGMPEG”后定义的关键字,其余的是系统预定义关键字。
下面我们先对预定义关键字作简单介绍。
Config包含了有关显示字体、分辨率、显示点距、颜色深度以及打印机型号等信息。
Enum包含了系统当前配置的所有硬件设备的信息。
hardware包含了系统使用的浮点处理器、串口等有关信息。
Network包含了网络的有关信息。
Security包含了安全设置的信息。
SOFTWARE包含了系统软件、当前安装的应用软件及用户的有关信息。
System包含了系统的全部软件和硬件信息。
对于HKEY_LOCAL_MACHINE关键字,有两点应该说明:
1.根据计算机中硬件配置和安装文件的不同,在HKEY_LOCAL_MACHINE中的信息将有很大的差别(在其他的关键字中也会反应出这种差别)。
2.HKEY_LOCAL_MACHINE下面各个子关键字中包含的信息有很多是重复的,这样做的目的,只是为了浏览和编辑的方便。
当然在注册表数据库中是不会重复的。
下面以笔者使用的5X86系统的Enum(枚举)子关键字为例,介绍它的结构和包含的信息。
由于该硬件系统配置简单,因此图13中列出Enum下面的子关键字只有8项。
如果你的硬件系统采用的是新型的主板并具有更多的配置,在Enum下面将会出现更多的子项,如BIOS、声卡、解压卡等。
如果你的硬盘分为多个逻辑盘,也会把这些逻辑盘作为子项列出。
下面就图13列出的几个子项作进一步介绍。
1.ESDI子关键字该关键字包含了硬盘的有关信息,图14为ESDI的结构。
由于本系统配置了两个硬盘,因此有两个子项“ROOT&*PNP0600&000000”和“ROOT&*PNP0600&000010”,分别表示C、D两个硬盘。
在右窗格中显示出C盘的若干有关信息。
子项关键字中的前缀“ROOT”表示它们是挂接在“根”下面的设备,你可以在ROOT子关键字中找到它们。
如果你在系统中安装了虚拟光驱,也将在本子关键字中出现,而不会在SCSI子关键字中出现。
因为虚拟光驱实际上是硬盘的一个部分。
2.FLOP子关键字登录了软盘驱动器的有关信息。
3.HTREE子关键字本系统没有使用。
4.Moniter子关键字包含了系统监视器的有关信息。
5.Network子关键字包含了本系统安装网络的有关信息。
6.PCI子关键字包含了PCI总线和