电脑技术学习

注册表 基础知识

dn001

新手篇--注册表的用途

这是写给电脑初学者的文章,目的是让大家对注册表有所了解,如果你是高手可以跳过:)。注册表是windows的命根,里面储存着大量的系统信息,说白了就是一个庞大的数据库。如果你不懂什么是数据库,那没关系,不影响你了解注册表,不过最好对数据库有所了解。注册表里面所有的信息平时都是由windows操作系统自主管理的,也可以通过软件或手工修改。注册表里面有很多系统的重要信息,包括外设,驱动程序,软件,用户记录等等,注册表在很大程度上“指挥”电脑怎样工作。

注册表有很大的用处,功能非常强大,是windows的核心。通过修改注册表,我们可以对系统进行限制、优化等等。比如我们不想让别人用“开始”菜单,我们可以修改注册表来达到目的。除此之外,还有很多了,你可以参考本手册进行修改,里面的内容很详尽,并随时间而充实。注册表修改主要是多练习,细心观察,认真思考,就会慢慢掌握的。

特别值得一提的是,学知识是为了运用,所以并不要求对每一条命令都记住,因为太多了,时间一长容易忘记,况且这又不是考试,缓和,呵呵。你只要知道修改方法,熟练运用就可以了,好了,限于时间,本文章到此,祝学有所成!

注册表修改快速入门

根据本人经验,修改注册表有三种方法,归纳如下:
 
在这里提醒大家一句,如果你没有把握,切记在修改之前,一定要备份注册表。

一.用windows的注册表修改器--regedit.exe

方法是在windows的左下角开始菜单里,点击运行,然后键入regedit,回车即可。你可以在打开的修改器里查找所需要修改的注册表修改项。比如要禁止“开始”菜单里的查找功能,我们知道修改的内容为:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer,在右边的窗口中新建一个DWORD值"NoFind",并设值为1.(查阅本手册即可找到)。那么我们打开注册表修改器,可以看到有HKEY_CURRENT_USER这个根键,左边还有一个"+"号,点击"+"号展开下面的目录树,找到Software,再展开找Microsoft,这样一层一层地展开,直到找到Explorer项,看右边的窗口,你会发现有不少的键值,恭喜你,你快成功了。然后在右边的窗口中单击鼠标右键,选择新建DWORD值,输入NoFind,注意大小写,你会发现右边窗口中多了一个名为NoFind的键名,OK,我们给它赋值,在NoFind上双击,然后在弹出的窗口中将原来默认的0改成1,最后,重新启动计算机后,你会发现开始菜单里的“查找”消失了,如果你想把它改回来,那么按上面的方法,把1改成0,然后重新启动就可以了。是不是很简单?其他的修改也差不多了,关键是要找到修改的内容,这就是本手册所提供的强大功能了。呵呵,相信能给你带来很大的帮助。


 

二.用专门的修改软件

如果你很懒,不想知道究竟要修改什么内容。那么就用专门的注册表修改软件了,比较有名气的是“超级兔子魔法”,还有“windows优化大师”,在这里评价一下,windows优化大师名字响,可是不好用。我本人比较喜欢的是另外一个叫“注册终结者”的修改器,主要是界面友好,功能多而不容易出错。现在随着winXP的推出,各种修改器也随之更新,可是功能还有待改进。现在新出的“神奇注册表”修改器,可以修改winXP等,大家可以试试看。这些修改器都很容易上手,修改起来很方便。不过你如果想深入学习注册表,最好还是手动修改了,不然你学不到多少东西的了。

三.手工写.reg注册表文件

这是修改注册表的高级技巧了.有没有试过自己写注册表文件?不用任何修改器?直接把写好的注册表文件——.reg倒入注册表?呵呵,这项技巧并不需要每个人都知道了,你只要知道上面的两个就可以了。当然,如果你是电脑迷,我们赞成深入学习。

现在我们来看看.reg文件的结构如何。

.reg文件的标准格式如下:

REGEDIT4

[路径] (注意用大小写)
"键名"="键值" (针对字符串型键值)
"键名"=hex:键值 (针对二进制型键值)
"键名"=dword:键值 (针对DWORD键值)

括号里面的内容为本人的注释,写文件的时候就不需要那些小括号了,其他上面所列的都必须包括。注意引号输入时不能用中文输入的引号,必须用英文的引号,否则会出错。

那么,怎么写.reg文件呢?我们需要一个文本编辑器,用windows的记事本就可以了。单击鼠标右键,选择新建文本文档,然后在生成的文本文件里输入上面规格的内容就可以了,最后,选择另存为,输入你想要的文件名+.reg保存即可。比如你要生成test.reg,输入test.reg保存即可,你可以看到生成了一个带图标的test.reg.双击运行这个test.reg文件就能相应的修改注册表了,系统会提示“是否导入注册表”之类的信息,确定就可以了。OK,我们可以手动写注册表了,是不是感觉很酷? 

先别急,我们来看看一个标准范例,这是从注册表里面导出来的,大家慢慢学习,跟着模仿一下就能写出自己的.reg文件了。

REGEDIT4

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer]
"NoRun"=dword:00000000
"NoRecentDocsMenu"=hex:01,00,00,00
"NoFavoritesMenu"=dword:00000000
"user"="sundrink"

大家可以看到,dword是16进制,hex是二进制,字符串则可以直接赋值。只要将上面的内容复制保存到文本文档里,然后另存为你想要的.reg文件运行就可以了。呵呵,原来也不是很难嘛,耐心一点就可以了。当然,你要模仿,要自己动手写.reg文件,用记事本就可以了。

说多两句,为什么要手写注册表?因为有时候我们会碰到一台锁定regedit的机子,有什么办法解开呢?呵呵,如果你会手写注册表文件的话,那很简单了......大家发挥想象吧!用不了很长时间的。

最后在文章结尾,提醒大家,注册表修改可不是闹着玩的,其中有些键值是不能随便改的,因为如果你没有备份,而又不知道怎么改回来的话,那就麻烦了,我也帮不了你。所以奉劝各位在修改注册表之前一定要记得备份,切记!


初步认识win98注册表

 

从Windows 95开始,Microsoft在Windows中引入了注册表(英文为REGISTRY)的概念(实际上原来在Windows NT中已有此概念)。注册表是Windows 95及Windows 98的核心数据库,表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序运行的正常与否,如果该注册表由于某种原因受到了破坏,轻者使Windows的启动过程出现异常,重者可能会导致整个Windows系统的完全瘫痪。因此正确地认识、修改、及时地备份以及有问题时恢复注册表,对Windows用户来说就显得非常重要了。

切记:在改动注册表前务必进行备份,以防不测。

而当Windows 98不能正常启动时,可在DOS方式下运行Scanreg/Restore,以恢复注册表。 如果你只是想修改系统设置,最好使用专门的工具软件;如果你确实要手工修改注册表,建议在修改前做好备份。如果注册表遭到破坏,Windows将不能正常运行,所以我们必须经常的备份注册表.(其实Windows在每次启动成功时都会备份注册表)。

常用的注册表备份方法和工具很多,大家可以根据个人选择一个。如利用注册表编辑器中的"导出注册表文件"即可导出一份扩展名为.REG的文件. 向大家推荐一个好用的备份工具--Windows光盘上:OtherMiscERUERU.EXE--紧急事故恢复工具(Emergency Recovery Utility). 如果光盘上没有,在我的网站上有,大家可以去下载。该工具小巧,功能却不错,很实用,可以备份sysytem.ini、win.ini、msodos.sys、System.dat等所有的系统文件。使用方法很简单,运行ERU,选择一路径(默认是A盘)如:C:ERD备份,以后如需恢复,则在DOS下进入C:erd目录,运行ERD.EXE,就可完整恢复整个系统配制文件。一点说明,ERU.EXE是备份用的,而ERD则是还原的时候用的。

另外,谈一下整个windows系统备份。因为我们平时安装软件,不用的时候会删除,虽然现在软件基本能反删除,但总是有软件会留些垃圾下来的,所以时间一长,你的windows就越来越庞大了,整个系统的性能下降。

现在的备份软件很多,也很方便,如ghost等,所以还是根据自己的习惯选择。在windows下有两个简单的备份办法:

一是在windows下的dos窗口用xcopy命令,
xcopy c:windows*.* c:winbak/s/e/h/k/y/c,各参数意思大家用xcopy/?理解。这样你的系统就备份在winbak目录下了。注意:该命令需在windows的dos窗口下运行,因为你在纯dos下运行,xcopy或xcopy32将不支持长文件名和h参数下的拷贝隐含和系统文件。

二是打开资源管理器,选择菜单的“查看”→“选项”→“查看”选中“显示所有文件”,也就是说在资源管理器下能查看所有的文件(系统、隐含、只读、等)。好己完成一半了,然后进入windows目录,你会看到所有的文件,然后选定全部所有的文件(ctrl+A),(是不是有人在笑,这招我早试过,不行),哈,当然这样你复制系统不到一半就会保护性中断,到底是什么原因导致复制中断呢?我们知道windows系统使用临时文件作为虚拟内存,明白了吧,关键在此,这文件是WIN386.SWP,刚才复制到这个文件中断了,下面就简单了,在windows下全选中后,找到WIN386.SWP文件,按住CTRL键同时,用鼠标点一下,结果是除了这文件外别的都选中。然后复制到事先建好一目录下。这样widnows系统备份结束,这是你比较两个目录大小不一样,没关系,因为你没复制WIN386.SWP,所以有差别,这是临时文件,不影响系统完整。下次你要重装系统时只要在纯dos下用ren 命令改两个目录名称就行了。另外有点要注意,我们没备份C盘根目录下的配制文件,最好备份一下,用ERU或手动。别看啰啰唆唆说了一大堆,做起来,两三下就解决。你完成备份后一定要验证一下,不然没有备份完全就死定了。验证方法:在纯DOS下用REN命令改目录名,如:ren windows win,ren winbak windows即可,这里假设winbak是你刚备份的目录。

本人推荐大家用第二种方法,这种方法简单,并且不容易出错,你以后再也不用重装系统了,第一次装好windows后,赶紧备份一个windows复本,这样会节省你的不少保贵时间。当然你要备份整个硬盘还是用专业的软件,如:ghost,不然速度慢。

下面就接触一下注册表,可以在“开始”菜单中,“运行”按钮,键入regedit就可打开注册表,再次强调一下,不要乱改,它是你windows的命根子,改之前一定要备份。

 

认 识 注 册 表

六大根键的作用

在注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于目录结构。每个键都包含了一组特定的信息,每个键的键名都是和它所包含的信息相关的。如果这个键包含子键,则在注册表编辑器窗口中代表这个键的文件夹的左边将有“+”符号,以表示在这个文件夹中有更多的内容。如果这个文件夹被用户打开了,那么这个“+”就会变成“-”。

1.HKEY_USERS

该根键保存了存放在本地计算机口令列表中的用户标识和密码列表。每个用户的预配置信息都存储在 HKEY_USERS 根键中。 HKEY_USERS 是远程计算机中访问的根键之一。

2.HKEY_CURRENT_USER

该根键包含本地工作站中存放的当前登录的用户信息 , 包括用户登录用户名和暂存的密码 ( 注:此密码在输入时是隐藏的 ) 。用户登录 Windows 98 时,其信息从 HKEY_USERS 中相应的项拷贝到 HKEY_CURRENT_USER 中。

3.HKEY_CURRENT_CONFIG

该根键存放着定义当前用户桌面配置 ( 如显示器等 ) 的数据 , 最后使用的文档列表( MRU )和其他有关当前用户的 Windows 98 中文版的安装的信息。

4.HKEY_CLASSES_ROOT

包含注册的所有ole信息和文档类型,是从 hkey_local_machinesoftwareclasses复制的。根据在 Windows 98 中文版中安装的应用程序的扩展名 , 该根键指明其文件类型的名称 。

5.HKEY_LOCAL_MACHINE

该根键存放本地计算机硬件数据 , 此根键下的子关键字包括在 SYSTEM.DAT 中 , 用来提供 HKEY_LOCAL_MACHINE 所需的信息 , 或者在远程计算机中可访问的一组键中。

该根键中的许多子键与 System.ini 文件中设置项类似。

6.HKEY_DYN_DATA

该根键存放了系统在运行时动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中。

认识键和子键

注册表通过键和子键来管理各种信息。但是,注册表中的所有信息是以各种形式的键值项数据保存下来。在注册表编辑器右窗格中,保存的都是键值项数据。这些键值项数据可分为如下三种类型:

1. 字符串值

在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成,最大长度不能超过 255 个字符。比如“ D:pwin98trident ”即为键值名“ a ”的键值,它是一种字符串值类型的。同样地,“ ba ”也为键值名“ MRUList ”的键值。通过键值名、键值就可以组成一种键值项数据,这就相当于 Win.ini 、 Ssyt-em.ini 文件中小节下的设置行。其实,使用注册表编辑器将这些键值项数据导出后,其形式与 INI 文件中的设置行完全相同。

2. 二进制值

在注册表中,二进制值是没有长度限制的,可以是任意个字节长。在注册表编辑器中,二进制以十六进制的方式显示出来。比如键值名 Wizard 的键值“ 80 00 00 00 ”就是一个二进制。

3. DWORD 值

DWORD 值是一个 32 位( 4 个字节,即双字)长度的数值。在注册表编辑器中,您将发现系统会以十六进制的方式显示 DWORD 值。在编辑 DWORD 数值时,可以选择用十进制还是 16 进制的方式进行输入。

另外:对注册表信息的注册和修改,一般由以下几点实现:

安装Win9X时,由安装程序注册系统信息;
安装应用程序时,由安装程序注册该程序的配置信息;
添加新硬件时,由系统即插即用功能监测并注册的信息;
通过控制面板或属性对话框改变系统属性与设置而实现的信息变更;
通过注册表编辑器对信息进行手工修改.


DOS下维护注册表的高级技巧

现在随着电脑应用知识的普及,我想,很多朋友对WINDOWS注册表的修改已经有不少经验和心得。在图形界面下对注册表的维护和修改,就不必再提了,但有时候,我们可能会遇到更辣手的事情,如由于人为错误操作或者恶性病毒感染而使系统切底崩溃,不能进入WINDOWS图形界面时,我们对此是否只有重装这种方法呢?本文将就在DOS下面尽量挽救系统这方面作出阐述。

一、使用scanreg/restore


我想这种方法大家也比较熟悉了,只要在DOS界面下输入该命令,就可以在最近的5个注册表备份里恢复,如果幸运的话,系统就可以马上恢复。但,事实上,用这种方法有个致命的缺陷就是你只有最近5天的注册表备份可以选择。因为控制着自动备份的scanreg.exe只会在每天第一次启动电脑时备份,如果哪天你安装的程序或者对注册表的修改比较多,那么你的努力就大多白费了。这种方法就正如是眉毛胡子一起抓,正确和错误的都一起改掉,是否能为恢复系统帮上忙,总有一种听天由命的感觉。所以,笔者鼓励大家使用第二种方法。

二、使用DOS界面的regedit.exe


如果把scanreg/restore比作是一刀切的话,这种方法更像是一次高明的外科手术,只一矢中的地针对病,把错误修复而完全不影响注册表的其他健康部分。这样,我们就能在最大限度上保留我们的工作成果了。使用regedit.exe对注册表实行局部修改的思路是:首先,把注册表里有嫌疑的分支导出;然后,使用edit对它进行分析和修改;最后,把健康的分支重新导入注册表里。好了,我们来看看整个过程的具体操作。

1 导出注册表分支


在DOS下导出注册表分支的命令格式是:Regedit[/L:system] [/R:user] /E filename [regpath1]。/L:system是指定system.dat的路径,/R:user是指定user.dat的路径,如果不说明,系统就会在默认的路径下找;/E:是导出注册表分支的文件名,regpath1是要导出的注册表分支。比如,我们要导出默认注册表关于控制系统启动的分支到test.reg里,命令如下:regedit /e test.reg HKEY-LOCAL-MACHINESoftwareMicrosoftWindowsCurrentVersionRun。

2 对注册表进行分析、修改


在DOS下面只要运行edit就能对*.reg文件进行编辑了,因为我们导出的注册表实际上就是文本文件。不过,要正确找出引起错误的地方并修改,需要我们平时对注册表积累的经验。下面,我们看一下它的基本结构,以使我们在对它的修改时可以有的放矢。

我们知道,注册表里面有6个主分支,其中容易引起致命错误而使WINDOWS不能正常启动的分支有:   [HKEY_LOCAL_MACHINE],记录着本地机器的硬件配置以及安装的相应软件,特别是[HKEY-LOCAL-MACHINEEnumPCI]这个分支下面的主键值,一旦出错,WINDOWS往往不能启动。如[HKEY-LOCAL-MACHINEEnumPCIVEN_8086&DEV-7111&SUBSYS_00000000&REV-01BUS_00&DEV_07&FUNC-01]记录的是硬盘控制器的详细信息,下面的Logconfig记录着它的各种参数;[HKEY_LOCAL-MACHINEEnumPCIVEN-1002&DEV-4C42&SUBSYS_4C421071&REV-DC00800]记录的则是显示卡的重要资料和参数,一旦这里出错,往往会导致WINDOWS在启动时黑屏,然后死掉。

另外还有[HKEY-LOCAL-M ACHINESoftwareMicrosoftWindowsCurrentVersion]里记录着WINDOWS当前版本的信息以及启动时执行的程序等,这是病毒最爱攻击和修改的地方。

至于还有[HKEY-CLASS-ROOT]是记录文件种类及其关联信息的,[HKEY-CURRENT-USER]里记录着当前用户的各种信息,包括登陆的密码和各方面的设置等,这些一般不会引起WINDOWS的致命错误,这里也不再详细分析了。

当我们对这些键值分析和修改时,如果碰到什么不清处的地方,可以通过第1点的导出注册表方法,把一些备份注册表的相应分支导出,进行比较。WINDOWS的注册表备份都放在C:windowssysbackup里面,如我们要导出第一个注册表备份的[HKEY_LOCAL_MACHINE]分支,那么我们可以先进入该目录,然后键入命令:extract /e rb000.cab *.*,先把system.dat和user.dat解压出来,再键入命令:regedit /L:system.dat /R:user.dat /e backup.reg HKEY-LOCAL-MACHINE。 笔者在这里提醒一下,这是一个很好的解决问题的方法,再用上一些文件比较软件可以很快的找出错误的,请诸位慢慢体会。

3 把修改好的注册表分支重新导入


命令的格式为:regedit /L:system /R:user file1.reg file2.reg。我们一般都要修改默认的注册表文件,所以在实际使用中只需键入:regedit file1.reg就行了。   

好了,讲了这么久,我们看看一个具体的案例。

学院机房里的一台机器在重新启动后,无论用正常模式或者安全模式都不能进入WINDOWS界面,表现为启动过程中硬盘突然不读。用SCANDISK检查过硬盘,并没有发现问题。在启动过程中选择生成BOOTLOG.TXT文件,发现启动到硬盘控制器后就断掉了。本来想用scanreg/restore恢复备份的注册表,可是该机器为了加快启动,并没有自动备份。于是,用regedit把[HKEY-LOCAL-MACHINEEnumPCI]分支导出,键入:regedit /e hdc.reg HKEY-LOCAL-MACHINEEnumPCI;接着用EDIT查看关于硬盘控制器的部分,发现有"ChannelOptions"=hex:00,问题到这里终于发现了,原来是有人把IDE控制器设置成不使用,造成在加载硬盘控制器后,系统不能访问硬盘,所以把它改为:hex:02;再键入命令:regedit hdc.reg,把修改后的信息导入。重新启动机器,一切正常运行了。

这样,在不损坏任何数据的情况下,就把问题解决了。希望这个例子能给大家带来这种DOS下维护注册表技巧的启发,毕竟,我们硬盘上面有很多都是无价的数据。

标签: