搜档网
当前位置:搜档网 › 注册表基础知识

注册表基础知识

注册表基础知识

注册表是Windows系统的核心,它实际上是一个庞大的数据库,是Windows的数据配置中心,里面存储着大量的软件、硬件及用户信息。通过修改注册表,我们可以对系统功能进行更改、限制、增强、优化等等。注册表的修改一般可以通过多种不同的途径:如注册表编辑器(regedit),专门的修改工具,手写reg注册表文件,控制面板,软硬件的安装与应用,用户的普通操作等。

为了对注册表有一个初步的认识,单击“开始”->“运行”,输入“regedit”,单击“确定”,出现一个类似于Windows资源管理器的“注册表编辑器”程序界面,其整体可分为左右两个窗格,在左侧窗格里列出了几个根键。下面简要介绍一下各根键的作用:

1.HKEY_CLASSES_ROOT
包括所有已注册的文件类型、OLE信息以及更多的内容,它其实就是 HKEY_LOCAL_MACHINE\Software\CLASSES子键的内容(在这里称为“别名”),只是单独把它作为根键列出来以便查阅。

2.HKEY_CURRENT_USER
包含当前登录的用户信息,是HKEY_USERS根键下某一子键的别名。对于Windows 9X,它的名称是当前用户的名称;对于Windows NT/2000/XP,它的名称是当前用户的安全标识符(SID)。如果系统是Windows 9X而且没有设置多用户的话,则HKEY_CURRENT_USER就是HKEY_USERS中.DEFAULT的别名。

3.HKEY_LOCAL_MACHINE
Windows最重要的根键,包括了计算机软件和硬件的配置数据,这些信息专为计算机本身使用,而不是为登录的某个用户使用。

4.HKEY_USERS
包括了所有登录用户及默认用户的配置数据,默认的用户配置信息存放于HKEY_USERS\.DEFAULT中。

5.HKEY_CURRENT_CONFIG
包含计算机的当前硬件配置信息,在Windows 9X中,它是HKEY_LOCAL_MACHINE\Config\0001(0002...)的别名;在Windows NT/2000/XP中,它是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001(0002...)的别名,其中0001、0002对应不同的硬件配置文件。

6.HKEY_DYN_DATA
该根键存放了系统在当前状态的动态信息,Windows每次启动时都会重建它并保存在内存中,而永远不会写入磁盘。注意Windows XP的注册表不存在此根键。

从上面可以看出,注册表实际上只有两个主要根键,HKEY_LOCAL_MACHINE和HKEY_USERS,其余的根键都只是这两个根键的某个分支。

注册表中所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于文件夹的目录结构,每个类似文件夹的项目被称做键(主键,Windows 2000及以后的注册表编辑器把它叫做项),它们可能包含一系列子项目,叫做子键(或子项),子键可以包含更多的子键。另外还有一个常被提到的

分支的概念,它表示一个特定的子键及其所包含的一切。

在注册表编辑器的右侧窗格中,我们可以看到每个键均可包含任何数量的值(也称做键值、值项),每个值均包含三部分:名称、数据和数据类型,数据类型大致可分为三种:

1.字符串(REG_SZ):可以是任何字符,最大长度不能超过255个英文字符。Windows2000及以后的操作系统还提供了另外两种字符串:多字符串(REG_MULTI_SZ)和可扩充字符串(REG_EXPAND_SZ)。

2.二进制(REG_BINARY):没有长度限制的二进制数据,在注册表编辑器中,二进制是以十六进制的方式显示出来的。

3.DWORD/双字(REG_DWORD):32 位(4个字节,即双字)长度的二进制数值,注册表以8位16进制数来显示DWORD值,在编辑 DWORD 数值时,可以选择用十进制还是16进制的方式进行输入。

注册表HKEY_CLASSES_ROOT根键的简要分析

在Windows注册表里,HKEY_CLASSES_ROOT是列在第一位的根键,其重要性可想而知,其实它就是HKEY_LOCAL_MACHINE\Software\CLASSES中的全部内容,对HKEY_CLASSES_ROOT的修改其实也就是对HKEY_LOCAL_MACHINE\Software\CLASSES的修改。据说微软把它单独列出来是为了向下与Windows3.x兼容,不过更重要的应该是方便了查阅,使用户能更快的获取信息。

HKEY_CLASSES_ROOT是个非常庞大的数据库,它包括了注册表一半以上的数据,大家可以把HKEY_CLASSES_ROOT单独导出来,再导出整个注册表,对比一下就很清楚了。

HKEY_CLASSES_ROOT大体上包括了已注册的文件类型、OLE信息以及更多的内容,可以粗略地分为两个部分:A、前面带“.”的键,B、前面不带“.”的键,A部分的键均可以在B部分找到相对应的键,下面举一个BMP文件的例子来说明。

BMP文件也就是扩展名为BMP的文件,打开注册表编辑器,找到HKEY_CLASSES_ROOT\.bmp,可以看到右边“默认”的值是“ACDSee.BMP”(假定已安装了ACDSEE并与BMP文件关联),然后找到HKEY_CLASSES_ROOT\ACDSee.BMP,可以看到里面有多个子键。

“DefaultIcon”子键定义了Windows显示此文件类型的图标,其“默认”的值是“C:\Program Files\ACD Systems\PlugIns\IDE_ACDStd.apl,1”,表示定义BMP文件显示图标的图标文件,最后的“1”表示图标的ID(从0开始计数),因为“IDE_ACDStd.apl”这个文件不只包含一个图标。

“shell”子键定义了BMP文件的打开方式,包含了子键“edit”、“Open”等等,在“shell”子键右边“默认”值中的“Open”就是默认打开文件的方式(通过双击即用这种方式打开),“edit”和“Open”都各有一个子键“command”,其“默认”的值就是用于打开BMP文件的应用程序,这两个项目都会出现在BM

P文件的右键菜单里,若删除“edit”键,则相应右键菜单项也将被删除,也可以另外添加主键,指定更多的程序用来关联打开BMP文件,其右键菜单也会出现相应项目。

还有一个子键“CLSID”,表示它的类标识符(CLSID)名称,每个类标识符的信息都可以在HKEY_CLASSES_ROOT\CLSID中查找。一些类标识符还会定义一个程序标识符(ProgID),它通常都简短易读,大大方便了程序的调用而不必使用冗长而乏味的类标识符。

注册表的一些使用技巧

△不重启使注册表修改生效的方法

Windows 95/98/ME:
按下CTRL+ALT+DELETE, 弹出“关闭程序”对话框,选择“Explorer”,然后单击“结束任务”,显示关闭计算机的画面,单击“取消”,十秒钟后将会弹出一个程序没有响应的对话框,单击“结束任务”,Windows资源管理器将与新的注册表设置一起重新加载。

Windows 2000/XP/2003:
按下Ctrl+Alt+Delete, 然后选择“任务管理器”。选择“进程”标签,选择“explorer.exe”进程,单击“结束进程”,选择“文件->新任务”,然后输入“explorer”,单击“确定”。

注意:并不是所有注册表的修改都能通过这种方法生效,有些需要注销再登录,在HKEY_CURRENT_USER中所做的修改都可以使用前面这两种方法生效,但是在HKEY_LOCAL_MACHINE中的一些设置仍然需要重新启动,如在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet中所做的修改。

△reg文件的一些说明和用法

1.reg文件字符串值中路径的斜杠要用双斜杠表示,否则导入将无效,即C:\WINDOWS要表示成"C:\\WINDOWS"。
2.要删除某子键,在reg文件中在键的最前面加上“-”,如:
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\WinOldApp]
3.要删除某键值,在值的等号后面加上“-”,如:
[HKEY_CLASSES_ROOT\lnkfile]
"IsShortcut"=-

△通过inf文件修改注册表

inf文件是Windows的设置信息文件,它一般是用来设置或安装设备驱动、软件配置等信息。更为重要的是,我们可以在inf文件中设定一些语句达到对注册表的修改。这个方法有时非常有用,例如,如果注册表被锁,reg文件不能使用,那么通过inf文件就很容易解决,下面给出一个inf文件修改注册表的例子:

[Version]
Signature="$CHICAGO$"

[DefaultInstall]
Addreg=Add
Delreg=Del

[Add]
HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,regedit,0,"regedit.exe"
HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoDrives,1,01,00,00,00
HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFileMenu,0x10001,01,00,00,00

[Del]
HKCU,SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools

Addreg定义添加或修改注册表键值的段标题“Add”(名称可以随便

取),同理Delreg定义删除注册表键值的段标题“Del”,注意无论Addreg与Delreg顺序如何,Windows总是先处理Addreg再处理Delreg。

修改注册表的语句格式是:“根键,子键,值名,类型,值”。根键使用缩写HKCR(HKEY_CLASSES_ROOT),HKCU(HKEY_CURRENT_USER),HKLM(HKEY_LOCAL_MACHINE),HKU(HKEY_USERS),HKCC(HKEY_CURRENT_CONFIG);数据类型“0”表示字符串值,“1”表示二进制值,“0x10001”表示DWORD值。

要应用inf文件不是通过双击它(双击只会打开文件编辑),而是右键点击它然后在菜单中选“安装”。

△用reg命令修改Windows XP注册表

Windows XP新增了一个功能非常强大的命令“reg”,通过它可以很方便地对注册表键和键值进行修改、增加、删除、比较、复制、导入、导出等操作(详情参看Windows“帮助与支持”)。如果注册表编辑器被锁定,可以通过如下运行命令恢复使用:
reg delete hkcu\software\microsoft\windows\currentversion\policies\system /v disableregistrytools /f

△Windows 2000中的regedt32

Windows 2000的regedit相当与Windows 98的regedit,它不能像Windows XP的regedit那样设置注册表项(键)的权限,不能创建多字符串(REG_MULTI_SZ)和可扩充字符串(REG_EXPAND_SZ),也不能通过加载配置单元来修改其他用户的文件。若要使用这些功能,必须使用32位的注册表编辑器:regedt32。另外在Windows XP中,regedit和regedt32已没有任何区别。

△使用注册表编辑器的收藏夹

注册表的分支太多太长,要找一个键往往需要连续点击好几个分支,偶尔用用到无所谓,不过对于经常需要修改注册表的人来说,这严重影响了工作的效率。Windows 2000以上的注册表编辑器提供了收藏夹菜单,就像IE的收藏夹那么方便,能够快速定位到所需的子键,操作方法就像IE的收藏夹,选择某个子键添加就行了。

△修改其他用户的配置文件

在Windows XP及其它多用户系统中,不同用户的配置文件是分开存放的。默认情况下,注册表编辑器不会加载其它未登录用户的配置文件,如果要修改其他用户的配置文件,在注册表编辑器中,单击HKEY_USERS根键,然后选择文件菜单下的“加载配置单元”打开“C:\Documents and Settings\用户名”的文件夹,选择NTUSER.DAT文件,然后按“开始”后会弹出对话窗口,在“项名称”框内输入名称。在HKEY_USERS下便多了一个刚才输入项名称的文件夹,这个文件夹便是所需修改的用户配置文件,修改完成后选中刚才输入“项名称”的文件夹,然后选择文件菜单下的“卸载配置单元”即可。

△搜索注册表的技巧

注册表搜索的方式是从上往下的,如果你要搜索整个注册表,先点击选择HKEY_LOCAL_MACHINE根键再开始

搜索,因为前面那两个根键都已经包含在后面的HKEY_LOCAL_MACHINE和HKEY_USERS中了,所以从HKEY_LOCAL_MACHINE开始搜索可以大大节省搜索的时间。

△关于Policies\Explorer子键

在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer中所有的设置都可以应用于HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,后者的优先级比前者要高,而且属于本地计算机设置,所以对所有用户都有效。

△数据类型:二进制与DWORD

二进制:没有长度限制的二进制数值表示16进制。
DWORD(双字):以16进制形式的32位二进制数值(双字),注册表以8位16进制数显示DWORD。
只要数值在DWORD允许的范围之内,二者可以互换,作用是等价的。

在MS-DOS下维护WINDOWS 9X注册表

一、REGEDIT命令

REGEDIT命令不仅仅是一个WINDOWS程序,在MS-DOS下也可以运行使用。虽然功能没有在WINDOWS下那么强大,但有时也很有用处,比如系统出现问题无法进入WINDOWS的时候。首先说明一下,WINDOWS 9X的注册表全部保存在SYSTEM.DAT和USER.DAT这两个文件中,使用REGEDIT命令就是对这两个文件进行操作。以下是REGEDIT的命令行参数:

REGEDIT [/L:SYSTEM] [/R:USER] filename1
REGEDIT [/L:SYSTEM] [/R:USER] /E filename2 [regpath1]
REGEDIT [/L:SYSTEM] [/R:USER] /D regpath2
REGEDIT [/L:SYSTEM] [/R:USER] /C filename3

/L:SYSTEM:指定SYSTEM.DAT文件的位置,不指定则默认在WINDOWS目录
/R:USER:指定USER.DAT文件的位置,不指定则默认在WINDOWS目录
filename1:指定导入注册表的文件
/E filename2:指定导出注册表的文件
regpath1:指定导出注册表的分支,不指定则导出整个注册表
/D regpath2:指定删除注册表的分支
/C filename3:指定用来重建注册表的文件

下面通过实例来详细说明各参数的用法:

1.将reg文件导入注册表

把当前目录的file1.reg文件导入到C:\WINDOWS\SYSTEM.DAT和C:\WINDOWS\Profiles\USER.DAT中,命令如下:

regedit /l:c:\windows\system.dat /r:c:\windows\profiles\user.dat file1.reg

注意:reg文件不仅可以是以前导出过的,还可以利用edit.exe这个命令来编写或修改,再通过上面的方法导入,从而达到手工修改注册表的目的。

2.将注册表导出为reg文件

把保存在C:\WINDOWS\SYSTEM.DAT和C:\WINDOWS\Profiles\USER.DAT中所有HKEY_CURRENT_USER根键下的分支导出到file2.reg中,命令如下:

regedit /l:c:\windows\system.dat /r:c:\windows\profiles\user.dat /e file2.reg hkey_current_user

3.删除指定的注册表分支

如果我们要将保存在C:\WINDOWS\SYSTEM.DAT和C:\WINDOWS\Profiles\USER.DAT中的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run分支删除,命令如下:

regedit /l:c:\windows\system.dat /r:c:\windows\profiles\user.dat /d hkey_current_user\sof

tware\microsoft\windows\currentversion\run

4.用指定的reg文件重建注册表

如果我们要用file3.reg文件中的内容重新建立整个注册表,并将其保存到C:\WINDOWS\SYSTEM.DAT和C:\WINDOWS\Profiles\USER.DAT中,命令如下:

regedit /l:c:\windows\system.dat /r:c:\windows\profiles\user.dat /e file3.reg

注意:这是一个危险操作,它将会用指定reg文件的全部内容,重新创建一个注册表,从而删除了以前的注册表。


二、SCANREG命令

SCANREG.EXE是MS-DOS下的WINDOWS注册表检查器,主要用来备份和恢复注册表,其命令格式为:

SCANREG [/

母或按习惯使用的频度,可以为每个键添加注释以供以后查阅,导入reg文件时提供预览功能。

清理注册表:与一般的注册表清理工具一样,扫描及修复注册表错误及无效的部分,不过它还具有更多更直观的定制功能,可以选择普通清理或高级清理方式。

查找和替换:可以在指定键中查找,或者查找整个注册表,对于找到的键或键值,可以选择不操作,手动替换和自动替换。

编辑ini文件(配置文件):ini文件与注册表非常相似,大家知道注册表就是从win.ini和system.ini这两个系统配置文件演变而来的,用Reg Organizer打开的ini文件看起来就像注册表一样,只是分支只有一级而没有嵌套。

安装/卸载软件:注意只有通过Reg Organizer安装的软件才能通过它来卸载。Reg Organizer会记录安装的软件所做的所有改动,包括注册表和文件,可以很方便的查看各项记录。通过这样记录的软件当然可以完全从系统卸载而不留一丝痕迹。

☆Regmon(Registry Monitor)☆

Regmon是一个出色的注册表监视软件,它将与注册表数据库相关的一切操作(如读取、修改、出错信息等)全部记录下来以供用户参考,并允许用户对记录的信息进行选择性过滤(这一点很重要,因为注册表处理的数据量是非常大的)、查找、保存等处理。使用过程中可以让它停止记录,从而更好的观察先前注册表的变动。通过双击列出的注册表条目,可以直接打开注册表编辑器并定位到相关的注册表分支。这些功能为用户对系统的维护提供了极大的便利。

☆RegSnap☆

注册表比较工具,你可以在任何时候为系统文件进行扫描和快照,通过比较两个或多个不同的快照而找出它们之间的差别。RegSnap对系统的比较报告非常具体,对注册表可报告修改了哪些键,修改前、后的值各是多少;增加和删除了哪些键以及这些键的值。除系统注册表以外,RegSnap还可以报告系统的其他情况:Windows、Windows\system、Program Files文件夹及我的文档中所有文件的变化情况,包括删除、替换、增加了哪些文件;Windows的系统配置文件config.sys、autoexec.bat、win.ini和system.ini的变化情况,包括删除、修改和增加了哪些内容。

☆RegShot☆

一个小巧、实用的注册表比较工具,一次只能创建两个快照,可以添加任意目录来进行文件比较。

☆WinRescue☆

WinRescue是一个最经典,最优秀,最小巧的Windows系统备份及恢复工具。当你的Windows操作系统发生问题无法开机,连安全模式也有问题时,你可能会选择重装操作系统一途。其实您应该首先使用这个软件。它可以帮助你在平时事先备份Windows的结构配置相关文件及你想备份的任何文

件(当然包括引导扇区及主板的CMOS及注册表),并可以创建好几种紧急救援磁盘。当系统发生问题、或者无法正常进入时,可以使用救援磁盘顺利地开机进入系统或者安全模式,然后还原先前的结构配置。此程序还附有清理和压缩注册表的功能,最新版本除了可以制作引导软盘外,还支持烧录引导CD。

视Windows系统的版本不同,WinRescue分为不同版本,现有版本有95、98、ME、NT、2000、XP,如果你的系统是Windows 98,就使用WinRescue 98,如果是Windows XP,使用WinRescue XP。

☆Registry Medic(注册表医生)☆

如果你的系统已经变的缓慢而不稳定,你就需要一个专业的注册表清理及修复工具,注册表医生就能有效的帮助治疗您的注册表。它能够通过智能的方法查找并删除注册表中无效的键,检查注册表中文件及目录的完整性和一致性并修复它,扫描及修复无效的软件信息和开始菜单数据,查杀利用注册表加载的一些特洛伊木马程序。

☆Registry Drill☆

号称是世上对于注册表最详尽分析的软件,它能够找出成千上万其他同型软件所不能找出的错误。对于每个错误都会详尽描述key包含什麽,可以选择修复或是直接删除。

☆Registry Compressor☆

注册表压缩工具,它优化注册表的方式是:清除垃圾 -> 重建 -> 压缩。经过它的处理后,您会发现系统运行速度明显提高了。此外,本软件还具有备份和恢复注册表的功能。

☆Real Registry Protector☆

Real Registry Protector(RRP)是一个保护Windows注册表以防止其被写、删除或者添加键或键值。RRP可以保护制定的注册表键,也可以制定处理方式(允许,拒绝,询问我)。RRP基于系统的驱动器层,所以RRP的保护是不可能被跳过的。Real Registry Protector只能正确运行于Windows NT/2000/XP/2003。

☆Tweak UI☆

Microsoft出品的Windows系统设置工具。相对于众多系统设置的软件,这个还是比较可靠的!毕竟是微软自己出的软件。通过它可以直观的调整很多必须改动注册表才能达到的效果,如:调整Windows外观、菜单弹出速度、窗口动画效果、IE的外观等等。注意Tweak UI对于不同的系统有不同的版本。

☆Tweak FX☆

功能强大的系统设置工具,可以作为Tweak UI的补充或者替代品。Tweak FX建议是运行在Windows 2000/XP之上的,在Windows 9X上会有一些设置无效,可能会因此出现一些问题。

☆RegBox☆

一款通过修改注册表的进行系统设置的软件。但它与现在流行的同类软件截然不同,它不局限于固定的修改项目,可以无限制的扩充自身修改功能项目,并能方便快速地与其它RegBox用户交流数据。

☆其它系统设置工具☆

注册表终结者,超级兔子魔法

设置,Windows优化大师等。

★不推荐的注册表工具★

Registry Defragmentation,注册表整理工具,基本功能是整合碎片,删除无用键值,重新索引注册信息,使计算机的运行速度尽可能加快。听起来很不错的软件。但是我在Windows XP SP1上使用了之后,系统反而变慢,效率低下,还出现了一些莫名其妙的故障,真是失败!

相关主题