Suke
  • 注册日期
  • 发帖数
  • QQ
  • 铜币
  • 威望
  • 贡献值
  • 银元
阅读:1644回复:2

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

楼主#
更多 发布于:2004-04-27 12:46
<a href="attachment/2004-4/200442712468536.txt">2004-4/200442712468536.txt</a>
喜欢0 评分0
Samuel_na
路人甲
路人甲
  • 注册日期2004-04-18
  • 发帖数49
  • QQ
  • 铜币241枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-04-28 12:52
<img src="images/post/smile/dvbbs/em02.gif" />
在教室睡觉,在图书馆吃东西,在食堂自习,在寝室读书……
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2004-05-06 13:19
<P>现在随着电脑应用知识的普及,我想,很多朋友对windows注册表的修改已经有不少经验和心得。在图形界面下对注册表的维护和修改,就不必再提了,但有时候,我们可能会遇到更辣手的事情,如由于人为错误操作或者恶性病毒感染而使系统切底崩溃,不能进入windows图形界面时,我们对此是否只有重装这种方法呢?本文将就在dos下面尽量挽救系统这方面作出阐述。</P><P>一、使用scanreg/restore </P><P>
我想这种方法大家也比较熟悉了,只要在dos界面下输入该命令,就可以在最近的5个注册表备份里恢复,如果幸运的话,系统就可以马上恢复。但,事实上,用这种方法有个致命的缺陷就是你只有最近5天的注册表备份可以选择。因为控制着自动备份的scanreg.exe只会在每天第一次启动电脑时备份,如果哪天你安装的程序或者对注册表的修改比较多,那么你的努力就大多白费了。这种方法就正如是眉毛胡子一起抓,正确和错误的都一起改掉,是否能为恢复系统帮上忙,总有一种听天由命的感觉。所以,笔者鼓励大家使用第二种方法。</P><P>二、使用dos界面的regedit.exe </P><P>
如果把scanreg/restore比作是一刀切的话,这种方法更像是一次高明的外科手术,只一矢中的地针对病,把错误修复而完全不影响注册表的其他健康部分。这样,我们就能在最大限度上保留我们的工作成果了。使用regedit.exe对注册表实行局部修改的思路是:首先,把注册表里有嫌疑的分支导出;然后,使用edit对它进行分析和修改;最后,把健康的分支重新导入注册表里。好了,我们来看看整个过程的具体操作。</P><P>1 导出注册表分支 </P><P>
在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-machine\software\microsoft\windows\currentversion\run。</P><P>2 对注册表进行分析、修改</P><P>
在dos下面只要运行edit就能对*.reg文件进行编辑了,因为我们导出的注册表实际上就是文本文件。不过,要正确找出引起错误的地方并修改,需要我们平时对注册表积累的经验。下面,我们看一下它的基本结构,以使我们在对它的修改时可以有的放矢。</P><P>我们知道,注册表里面有6个主分支,其中容易引起致命错误而使windows不能正常启动的分支有:   [hkey_local_machine],记录着本地机器的硬件配置以及安装的相应软件,特别是[hkey-local-machine\enum\pci]这个分支下面的主键值,一旦出错,windows往往不能启动。如[hkey-local-machine\enum\pci\ven_8086&dev-7111&subsys_00000000&rev-01\bus_00&dev_07&func-01]记录的是硬盘控制器的详细信息,下面的logconfig记录着它的各种参数;[hkey_local-machine\enum\pci\ven-1002&dev-4c42&subsys_4c421071&rev-dc\000800]记录的则是显示卡的重要资料和参数,一旦这里出错,往往会导致windows在启动时黑屏,然后死掉。</P><P>另外还有[hkey-local-m achine\software\microsoft\windows\currentversion]里记录着windows当前版本的信息以及启动时执行的程序等,这是病毒最爱攻击和修改的地方。</P><P>至于还有[hkey-class-root]是记录文件种类及其关联信息的,[hkey-current-user]里记录着当前用户的各种信息,包括登陆的密码和各方面的设置等,这些一般不会引起windows的致命错误,这里也不再详细分析了。</P><P>当我们对这些键值分析和修改时,如果碰到什么不清处的地方,可以通过第1点的导出注册表方法,把一些备份注册表的相应分支导出,进行比较。windows的注册表备份都放在c:\windows\sysbackup里面,如我们要导出第一个注册表备份的[hkey_local_machine]分支,那么我们可以先进入该目录,然后键入命令:extract /e rb000.cab *.*,先把system.dat和user.dat解压出来,再键入命令:regedit /l:system.dat /r:user.dat /e backup.reg hkey-local-machine。 笔者在这里提醒一下,这是一个很好的解决问题的方法,再用上一些文件比较软件可以很快的找出错误的,请诸位慢慢体会。</P><P>3 把修改好的注册表分支重新导入 </P><P>
命令的格式为:regedit /l:system /r:user file1.reg file2.reg。我们一般都要修改默认的注册表文件,所以在实际使用中只需键入:regedit file1.reg就行了。   </P><P>好了,讲了这么久,我们看看一个具体的案例。</P><P>学院机房里的一台机器在重新启动后,无论用正常模式或者安全模式都不能进入windows界面,表现为启动过程中硬盘突然不读。用scandisk检查过硬盘,并没有发现问题。在启动过程中选择生成bootlog.txt文件,发现启动到硬盘控制器后就断掉了。本来想用scanreg/restore恢复备份的注册表,可是该机器为了加快启动,并没有自动备份。于是,用regedit把[hkey-local-machine\enum\pci]分支导出,键入:regedit /e hdc.reg hkey-local-machine\enum\pci;接着用edit查看关于硬盘控制器的部分,发现有"channeloptions"=hex:00,问题到这里终于发现了,原来是有人把ide控制器设置成不使用,造成在加载硬盘控制器后,系统不能访问硬盘,所以把它改为:hex:02;再键入命令:regedit hdc.reg,把修改后的信息导入。重新启动机器,一切正常运行了。</P><P>这样,在不损坏任何数据的情况下,就把问题解决了。希望这个例子能给大家带来这种dos下维护注册表技巧的启发,毕竟,我们硬盘上面有很多都是无价的数据。</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部