Windows注册表

注册表(Registry,繁体中文版Windows操作系统称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。
如何打开注册表
打开注册表的命令是:
regedit或regedit.exe、regedt32或regedt32.exe
正常情况下,你可以点击开始菜单当中的运行,然后输入regedit或regedit.exe点击确定就能打开windows操作系统自带的注册表编辑器了,有图慎重提醒,操作注册表有可能造成系统故障,若您是对windows注册表不熟悉、不了解或没有经验的windows操作系统用户建议尽量不要随意操作注册表。

如果上述打开注册表的方法不能使用,说明你没有管理员权限,或者注册表被锁定,如果是没有权限,请寻找电脑管理员帮助解决,如果注册表被锁定,请参照下面的方式进行解锁。

注册表解锁常见的方法:
1:创建一个文本文件,复制以下文字文本内容(注意开头之后第二行一定要是空行并且不可少),选择另存为,文件类型选择所有文件,文件名称为注册表解锁.reg
REGEDIT4
[HKEY_USERS.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Policies\system"DisableRegistryTools"=dword:00000000]
保存文件到桌面,双击打开桌面上的注册表解锁.reg如下图,点击确定即可。
2:使用第三方工具恢复,比如使用超级兔子或者优化大师这类系统辅助软件,
以下以优化大师为例说明:
打开优化大师,点击左侧的系统优化,然后选择系统安全优化,如右图
点击右侧的更多设置,如下图,取消禁用注册表编辑器项目前面的对勾(本图已经取消)

3:利用系统策略编辑器
在Windows 2000/XP/2003操作系统下
在Windows 2000/XP/2003等操作系统当中,我们可以通过单击 开始-运行,输入gpedit.msc之后点击确定或按回车,打开windows操作系统自带的组策略编辑器。然后,依次展开用户配置-管理模板-系统,双击右侧窗口中的阻止访问注册表编辑工具,在弹出的窗口中选择已禁用,确定后再退出组策略编辑器,即可为注册表解锁。

win7操作系统下
win7常见的家庭版和高级家庭版无法使用组策略编辑器,只能使用注册表编辑器命令regedit,只有win7旗舰版操作系统才有组策略。
注册表的由来
在Windows 3.x操作系统中,注册表是一个极小文件,其文件名为Reg.dat,里面只存放了某些文件类型的应用程序关联,大部分的设置是被放在win.ini、system.ini等多个初始化ini文件中。由于这些初始化文件不便于管理和维护,时常出现一些因ini文件遭到破坏而导致系统无法启动的问题。为了使系统运行得更为稳定、健壮,Windows 95/98/me设计师们借用了Windows NT中的注册表的思想,将注册表概念引入到Windows 95/98/me操作系统中,而且将ini文件中的大部分设置也移植到注册表中,因此,注册表在Windows 95/98/me等操作系统的启动、运行过程中起着重要的作用。

作用
注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。
具体来说,在启动Windows时,Registry会对照已有硬件配置数据,检测新的硬件信息;系统内核从Registry中选取信息,包括要装入什么设备驱动程序,以及依什么次序装入,内核传送回它自身的信息,例如版权号等;同时设备驱动程序也向Registry传送数据,并从Registry接收装入和配置参数,一个好的设备驱动程序会告诉Registry它在使用什么系统资源,例如硬件中断或DMA通道等,另外,设备驱动程序还要报告所发现的配置数据;为应用程序或硬件的运行提供增加新的配置数据的服务。配合ini文件兼容16位Windows应用程序,当安装—个基于Windows 3.x的应用程序时,应用程序的安装程序Setup像在windows中—样创建它自己的INI文件或在win.ini和system.ini文件中创建入口;同时windows还提供了大量其他接口,允许用户修改系统配置数据,例如控制面板、设置程序等。
如果注册表受到了破坏,轻则使windows的启动过程出现异常,重则可能会导致整个windows系统的完全瘫痪。因此正确地认识、使用,特别是及时备份以及有问题恢复注册表对windows用户来说就显得非常重要。 [2]
注册表的数据结构
注册表由键(也叫主键或称“项”)、子键(子项)和值项构成。一个键就是分支中的一个文件夹,而子键就是这个文件夹当中的子文件夹,子键同样它也是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。
在注册表编辑器(regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为REG_SZ,数据值为%systemroot%/system32/notepad.exe"%1数据类型。
注册表的数据类型主要有以下四种:显示类型(在编辑器中)数据类型说明
REG_SZ:字符串:文本字符串
REG_MULTI_SZ:多字符串值:含有多个文本值的字符串
REG_BINARY:二进制数:二进制值,以十六进制显示,
REG_DWORD:双字值;一个32位的二进制值,显示为8位的十六进制值。
注册表的损坏和解决方法
注册表可能出现的问题。
如果注册表受到严重的损害,存取硬件和软件可能会受到很大的限制,甚至系统不能启动。可能因为一个很小的问题,一个应用程序将不能正常的运行,或者运行的不稳定。
当注册表在运行时是受保护的,所以它不可能被复制,删除,或者改变内容,除非经过一个“验证过的”程序(比如安装程序,注册表编辑工具,和域用户管理器改变安全策略和浏览器等)。由于这些保护,注册表是十分安全的,但是并不是完全能防止的。问题仍会发生,你需要作好认识它们的准备来应付这些问题,
一:应用程序和驱动被添加到系统中
1:在注册表中找出大半的错误与添加和删除程序有关。多数用户自己添加或者更新驱动,应用程序等等。而且添加和删除都是多次的。
2:程序本身也有问题。没有任何应用程序没有bug或者错误。最好的情况,就是错误微乎其微,复杂深奥的问题你可能从来没见过。在设计程序时因为受时间和经费的限制,这些错误被放置不管。作为一个程序员来讲,在程序里有错误可能是次要的,但是它使系统崩溃那就变成一个大问题了。
3:驱动程序不兼容。个人计算机世界的开放结构体系造成了一定的风险,因为任何类型的部件组合在一起都是可能的。但测试所有的组合并保证所有设备的兼容性却不太可能。所以当用有windows 95下的驱动被用在windows nt时,某些问题就会产生。
4:在应用程序安装过程中在注册表中添加了不正确的项。在安装时,多数应用程序使用叫一个叫SETUP.INF的文件详细说明例如需要什么磁盘,哪个目录将被建立,从哪里复制文件,使应用程序工作正常所需要建立的注册表项等等详细信息。如果在SETUP.INF中有一个错误,这个改变也仍然会出现,就会出现严重的问题。
5:一个应用程序导致另一个应用程序和它缺省的文件关联出现错误。当一个应用程序被安装后,缺省文件类型被记录在注册表中。然后用户可以通过双击来启动应用程序和装载文件。很多时候,其他应用程序也会使用同样的扩展名。举例说,当一个TIF图形在基于注册表里的设置被激活时,最后一次装载的程序将会变成一个执行体。有时候,彻底不相同和根本不兼容的程序会在它们自己的文档文件中使用相同的文件扩展名,启动文档的快捷方式将不会工作。在用户操作过程中,如果在文件打开方式选择了不正确的程序,就会造成一定的问题。
6:在反安装时出现的错误。当你在控制面板里面的添加/删除程序中删除程序时,通过应用程序自身的反安装特征,或者通过第三方软件,这可能会对注册表造成损坏。除此之外,删除程序,辅助文件,数据文件和反安装程序可能会试图移去注册表的参数项。因为系统不可能知道一个应用程序在注册表中所要存取的相关参数项,这将会不经意的移除掉其他应用程序的参数项。
7:字体的错误。当注册表中字体ID出错,你将在应用程序中看到一种不同的字体。这就让人感觉很讨厌并可能需要你移去部分或全部字体并取代它们。这经常发生在用户频繁安装和删除字体的时候。
二:硬件设置改变或者硬件失败
1:如果计算机系统自身有问题,注册表会有损害。通常的,这些错误可以在正确的系统维护和管理下避免。
2:病毒问题。病毒很隐秘的改变正常的文件和注册表中的部分内容来影响我们的系统。
3:计算机用电如果不正常也会影响计算机系统,用UPS可以避免。
4:磁盘问题。很多时候你会因为容量不够使硬件失败而换掉你的硬盘。如果整块硬盘失败,当然,你将不得不从备份中恢复你的注册表。其他的则是磁盘独立扇区或者簇的故障。虽然这些情况在今天的系统不可能发生,但是磁盘表面介质的故障会使得磁盘部分不可读,包括那些注册表文件位置。
三:用户改动了注册表
1:手工改变注册表。当人们手工编辑注册表,由于数据的复杂性和难懂性使得他们难免容易犯错误,而且这个错误可能很严重导致系统工作发生中断。
2:拷贝其他注册表是很多用户犯的一个严重错误。因为从其他机器上拷贝来的注册表文件并不意味着也会在这一个机器上工作正常。对单独的系统来说注册表都是特殊的。甚至计算机硬件设备相同,拷贝来的注册表在另一个系统上也不见得就会工作。如果使用另一个系统的注册表,多数硬件设备将不会工作,用户和安全问题可能造成数据和应用程序信息无法使用。
技巧:如果你的注册表不断的变的庞大,那么先导出它然后象上面那样再逐个导入它。在这个导入导出过程中注册表中不必要的项将被清除出去。如果你使用Win98那么你可以使用Scanreg.exe程序。在windows目录命令提示下打Scanreg /fix来执行命令。
请记住:预防要比修复好的多。注册表太容易被改变了,在发生突然事件时有几个注册表的备份是解决问题最好的方法。
从注册表故障中恢复:
这里有四种不同级别的方法可以从Windows注册表故障中恢复
Restart
Redetect
Restore
Reinstall
让我们来看每一个方法来断定来使用它最适合的时间,并且解决何种类型的问题。
Restart(重新启动)Win95注册表大部分内容保存在RAM中。如果哪个信息受损,它就必须重新读取到正确的信息。当你重新启动系统,注册表将数据从硬盘读到RAM中就能使用了。
拿字体ID问题来说。每种字体在系统中用一个ID号来使用。当一个字体被用在一个文档时,这个字体被这个数字保存并且用一个名字来标识。当字体ID损坏那么字体显示和打印将被其他字体取代。重新启动系统从硬盘上刷新数据,将产生修复过的字体ID,这样字体显示和打印就变的正常了。
这也就是为什么Windows系统故障经常在重新启动后就又恢复正常的一个原因。
Redetect the Devices(重新检测硬件)
如果一个设备工作不正常,那么在注册表中控制设备的设置可能受损了。为了重新设置注册表,你应该删除并且重装设备的驱动,或者你应该让Win95重新检测它们。很多时候,当一个设备工作不正常,它们会在设备管理器上此设备前使用一个惊叹号标志显示出来。很明显,如果设备从来不工作,可能就是其他问题了。但是如果设备以前工作,现在出问题,注册表就需要被恢复。
要检测一个设备,在控制面板上选择添加新硬件。第一个问题是文你“需要Windows搜索新硬件吗?”如果你选择是,Win95将做一个彻底的搜索去找“新”设备。任何设置不正确的或者没找到驱动的设备将被检测到并显示出来。
Restore(恢复)
从CFGBACK中恢复注册表
从CFGBACK中恢复注册表有很多好处。如果你建立了几个备份,你可以选择正确的一个来恢复。你可以如同做手术般放置排列注册表参数项。
导入注册表文件
象前面章节讲述的那样,一个代替使用备份的方法就是导入一个.REG文件。REG文件包括了目的数据位置,所以对这个文件简单的双击就可以将数据放入注册表。它是所有恢复程序中最简单的,但是也可能造成错误。错误不会是用regedit.exe把数据写入错误的位置,它很可能出现在用户直接双击注册表文件的时候。
Reinstall(重新安装)
重新安装
最后的方法就是重新安装驱动、应用程序或者Win95。一般来说,它只花费你一个小时左右时间去做这些事。如果你在现有的文件上重新安装,很多配置信息还被安装在同样的地方。同样在安装驱动程序时,你应该重新加入配置数据。
实际上找出原因并修复它所花费的时间比重新安装还要多,这也就是为什么重新安装在技术支持上是一个相当普通的“解决方法”。关键的问题在于,“你是否想找出是什么错误,或者你是否只想让它工作正常?”答案取决于问这个问题的用户情况,发生问题的频繁次数和重新安装的软件的实用性,
当Windows第一次被安装时它将在启动目录的根目录上创建一个名为SYSTEM.1ST的文件。这是Windows第一次启动时创建的个简单的system.dat文件。你所应该做的就是将这个文件放到windows目录(在dos模式下)并将它的名字改为SYSTEM.DAT。然后重新启动。然后你就可以得到安装时第一次启动的windows。
因为很多.ini和.dll和其他文件的改变,这种方法的成功机率大概只超过50%。比如当装IE4.0后系统和注册表将有一个彻底的改变。我们的system.1st文件虽然包含了一个dll文件的参考,但它可能更新或者改变版本号。
这里就是几个在注册表出故障的时候恢复它的工具和方法。你的数据可能会安全恢复,但是不管你用什么方法,除了重新格式化硬盘,最好的方法就是做好系统注册表的备份工作。
备份注册表
两个重要的分支:
1:用户个人数据[HKEY_CURRENT_USER]
该分支中存放的是当前登录用户的个人个性化喜好设置、所用的软件的设置等个人数据。无论来宾、受限用户、高级用户还是管理员,都可以修改属于自己个人的注册表数据。用户个人的注册表数据就是“注册表编辑器”左侧窗格[HKEY_CURRENT_USER]主键下所包含的各子项和值项。
2:系统的核心数据[HKEY_LOCAL_MACHINE]
只有管理员权限的用户可以访问系统注册表数据,其中存放了系统中各项重要的核心设置数据。系统的注册表数据就是“注册表编辑器”左侧窗格显示的[HKEY_LOCAL_MACHINE]所包含的项、子项和值项。
与备份注册表过招
任务1:备份注册表分支并编辑部分设置
第一步:点击“开始→运行”(或命令行提示符),输入以下命令导出两个注册表分支(驱动器、路径及文件可自定义),导出后的myreg.reg大小约为8MB~9MB,而sysreg.reg大小约为30MB~60MB,视个人情况略有不同。
reg export hkcu c:\myreg.reg
reg export hklm c:\sysreg.reg
第二步:分别右击myreg.reg和sysreg.reg,选择“编辑”或“发送到→记事本”(创建右键菜单“发送到→记事本”,可将“开始”菜单中的“记事本”快捷方式复制到“C:\Documents andSettings\username\SendTo”文件夹),用“记事本”程序打开myreg.reg文件。
第三步:点击菜单命令“编辑→查找”,输入要查找内容的关键字,单击“查找下一个”。查找到一个数据,可执行删除、修改操作,然后按F3键可继续查找下一个数据。查找、修改所有数据,选择菜单“文件→保存”保存注册表文件即可。
如何利用注册表防止病毒运行?
经常在网络上冲浪,十有八九避免不了网络病毒的攻击,用专业的杀毒软件清除了这些病毒程序之后并重新启动计算机操作系统之后,我们有时会发现先前已经被清除干净的病毒又卷土重来了,这是怎么回事呢?
原来目前不少流行的网络病毒一旦启动后,会自动在计算机系统的注册表启动项中遗留有修复选项数据,待系统重新启动后这些病毒就能自动恢复到修改前的状态了。为了“拒绝”网络病毒重启,我们可以从一些细节出发,来手工将注册表中的病毒遗留选项及时删除掉,以确保计算机系统不再遭受病毒的攻击。
阻止通过网页形式启动,不少计算机系统感染了网络病毒后,可能会在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices等注册表分支下面的键值中,出现有类似有.html或.htm这样的内容,事实上这类启动键值主要作用就是等计算机系统启动成功后,自动访问包含网络病毒的特定网站,如果我们不把这些启动键值及时删除掉的话,很容易会导致网络病毒重新发作。
为此,我们在使用杀毒软件清除了计算机系统中的病毒后,还需要及时打开系统注册表编辑窗口,并在该窗口中逐一查看上面的几个注册表分支选项,看看这些分支下面的启动键值中是否包含有.html或.htm这样的后缀,一旦发现的话我们必须选中该键值,然后依次单击“编辑”/“删除”命令,将选中的目标键值删除掉,最后按F5功能键刷新一下系统注册表就可以了。
当然,也有一些病毒会在上述几个注册表分支下面的启动键值中,遗留有.vbs格式的启动键值,发现这样的启动键值时我们也要一并将它们删除掉。
阻止通过后门进行启动:
为了躲避用户的手工“围剿”,不少网络病毒会在系统注册表的启动项中进行一些伪装隐蔽操作,不熟悉系统的用户往往不敢随意清除这些启动键值,这样一来病毒程序就能达到重新启动目的了。
例如,一些病毒会在上面几个注册表分支下面创建一个名为“system32”的启动键值,并将该键值的数值设置成“regedit -s d:\windows”(如图1所示);咋看上去,许多用户都通常会认为这个启动键值是计算机系统自动产生的,而不敢随意将它删除掉,殊不知“-s”参数其实是系统注册表的后门参数,该参数作用是用来导入注册表的,同时能够在Windows系统的安装目录中自动产生vbs格式的文件,通过这些文件病毒就能实现自动启动的目的了。所以,当我们在上面几个注册表分支的启动项中看到“regedit -s d:\windows”这样的带后门参数键值时,必须毫不留情地将它删除。
阻止通过文件进行启动
除了要检查注册表启动键值外,我们还要对系统的“win.ini”文件进行一下检查,因为网络病毒也会在这个文件中自动产生一些遗留项目,如果不将该文件中的非法启动项目删除掉的话,网络病毒也会卷土重来的。
一般来说,“win.ini”文件通常位于系统的windows安装目录中,我们可以进入到系统的资源管理器窗口,并在该窗口中找到并打开该文件,然后在文件编辑区域中检查“run=”、“load=”等选项后面是否包含一些来历不明的内容,要是发现的话,必须及时将“=”后面的内容清除干净;当然,在删除之前最好看一下具体的文件名和路径,完成删除操作后,再进入到系统的“system”文件夹窗口中将对应的病毒文件删除掉。
病毒经常修改的注册表键值
1:IE起始页的修改
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main右半部分窗口中的Start Page就是用户当前设置的IE浏览器主页地址了
2:Internet选项按钮灰化&失效
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下的DWORD值“Setting”=dword:1 “Links”=dword:1 “SecAddSites”dword:1全部改为0之后再到HKEY_USERS.DEFAULT\Software\Policies\Microsoft\Internet Explorer\Control Panel下的DWORD值“homepage”键值改为0则无法使用“Internet选项”修改IE设置
3:“源文件”项不可用HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Restrictions的“NoViewSource”被设置为1了,改为0就可恢复正常
4:“运行”按钮被取消&失效HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer的“NoRun”键值被改为1了,改为0就可恢复
5:“关机”按钮被取消&失效HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer的“NoClose”键值被改为1了,改为0就可恢复
6:“注销”按钮被取消&失效HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer的“NoLogOff”键值被改为1了,改为0就可恢复
7:磁盘驱动器被隐藏
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer的“NoDrives”键值被改为1了,改为0就可恢复。
注意了上面几个细节后,许多网络病毒日后要想重新启动就不是那么容易了!

你可能感兴趣的:(Windows系统知识)