axin 发表于 2009-6-20 10:06:37

系统反复自动注销的解决方案

系统杀完病毒后,二次开机却无法正常进入系统,现象为反复的登陆和注销,这个问题相信有很多朋友遇到过,昨天有机会将这个问题研究了一下,参考网上的方法结合自己的分析和反复实践的经验,总结整理出几个解决的方法分享给大家。

首先这个问题的出现一般是两个原因:
1是系统重要文件userinit.exe受损或者受病毒感染现在被杀毒软件干掉了(总结为userinit文件损坏或丢失)。
2是注册表关键值Userinit=C:\WINDOWS\system32\userinit.exe曾经被修改为Userinit=C:\WINDOWS\system32\userinit32.exe,而userinit32.exe文件现被杀毒软件删除或者隔离(总结为注册表Userinit值错误)。
知道了原因,就能找到解决的办法。

下面方法适用于windows xp系统,假使系统安装是在c盘上。至于其他操作系统本人很少用,对其他系统未做测试仅做参考!

一、恢复文件法:

这个方法相对简单,主要针对前面说的第一种原因来恢复userinit.exe文件,这里提供了userinit.exe文件下载,方便大家使用,不需要再从安装盘解压了。

下载:userinit(exe).rar
   
下载后解压,想办法拷贝到c盘根目录,即c:\

下面的操作需要在dos下进行操作,如果你的c盘(系统盘)是FAT32,可以用win98光盘引导进入dos下(其他dos工具当然也可以),如果c盘是NTFS分区类型,需要用可以正确识别ntfs分区的dos,比如“NTFS DOS”,这种dos在很多系统光盘上就有。
进入dos后将下载的userinit.exe文件拷贝到c:\windows\system32\,命令如下(注意以实际路径为准)

copy userinit.exe c:\windows\system32\

重启系统检查能否正常登陆。
这个方法仅适合userinit.exe文件损坏而注册表正常的情况。

二、将错就错法:

如果上面的方法仍然不能解决问题,说明注册表也被修改了,既然注册表关键值userinit被修改为userinti32了,现在userinti32文件现在没有了,那我们就用userinit.exe伪造一个userinit32就不行了么,方法和上面一样,先将userinit.exe拷贝到windows\system32\,然后再拷贝一份改名为userinit32.exe。命令如下(注意路径以实际为准)

copy userinit.exe c:\windows\system32\
copy userinit.exe c:\windows\system32\userinit32.exe

重启系统进入xp,应该就可以正常登陆了,这样问题也就解决了,如果你还想彻底恢复原样,可以运行regedit进入注册表打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,双击Userinit修改值为C:\WINDOWS\system32\userinit.exe,退出注册表。现在注册表恢复后,伪造的userinit32.exe文件也就没用了,再进入windows\system32将其删除。
如果你不会使用注册表,也可以使用下面的修复文件,解压后双击导入注册表即可。

下载:userinit(reg).rar

三、修改注册表法:

有的朋友会问,自己的电脑安装有双系统,或者自己的硬盘已经挂在别的电脑上了,能不能在另一个系统下修改原来系统受破坏的注册表?其实已经有这样的工具,叫做ERD Commnader 2003,下面下载的是从《深山红叶pe系统》光盘里提取出来的。

下载:REGEDIT.rar
   

下载后解压出regedit.exe文件并拷贝到c盘根目录,也就是c:\。(发现金山毒霸会误报毒并自动删除,在这里BS一下自作聪明的金山,如果你不放心也可以不用)

   这里我们以《深山红叶pe系统》盘为例来说明它的使用方法(深山红叶虽然附带了ERD Commnader 2003,但是偶发现用它无法显示出想要的HKEY_LOCAL_MACHINE键根,而且用注册表导入修复也无效,所以只好将ERD Commnader 2003拷贝出来用)。

启动pe后,点击“开始”\“资源管理器”,选择c盘,找到下载的regedit.exe双击运行,这时系统会提示无法定位程序输入点……,不管他点确定,这种提示可能会出现2、3次,之后出现浏览文件夹的窗口,让你选择windows的安装目录,定位到“我的电脑\c盘\windows”,点确定,这时就打开了ERD commander 2003注册表编辑器,依次展开“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”,点击winlogon并在右侧找到“Userinit”,双击Userinit编辑数值数据为c:\windows\system32\userinit.exe并确定,然后重启电脑等待好运……

http://img.pconline.com.cn/images/bbs4/20075/12/1178981556767.jpg

http://img.pconline.com.cn/images/bbs4/20075/12/1178981567008.jpg

http://img.pconline.com.cn/images/bbs4/20075/12/1178981594211.jpg

   如果使用的是双引导或者硬盘挂在别的电脑上,使用方法参考上面。

四、导入修复注册表的另类方法:

用regedit /s的命令可以将修复文件导入注册表,达到修复的目的,但是这个命令只能在原xp的命令提示符下进行(我试过此时系统也无法进入“带命令提示符的安全模式”,而且在“故障恢复控制台”下也不支持regedit /s命令),如何才能在这种情况下进入xp命令提示符状态?网上提供了用cmd.exe代替屏保文件来达到这个目的另类方法,经过测试可成功使用,如果你的系统没有关闭屏保,那么这种方法可以一试。

首先下载注册表文件:userinit(reg).rar
解压出文件userinit.reg并想办法拷贝到c盘根目录,即c:\

用win98光盘或者NTFS DOS工具进入dos(参考前面的方法),假定你现在使用的屏保是“图片收藏幻灯片”,对应文件是ssmypics.scr,那么输入命令为:

ren \windows\system32\ssmypics.scr 1.scr
ren \windows\system32\cmd.exe ssmypics.scr

(第一句是将ssmypics.scr文件改名为1.scr,第二句是将cmd.exe文件改名为ssmypics.scr)
然后重启系统,系统会停留在登陆画面,这时候键盘、鼠标都不要动,耐心地等待,直到屏保出现。(如果你当初屏保设置时间过长,那现在就可以安心去干点家务了,呵呵!)
当屏保出现时你会发现屏幕上出现的是命名提示符,(哇,谢天谢地!),现在输入:

cd c:\
dir userinit.reg
regedit /s userinit.reg

(第一句是转入c盘根目录下,第二句是检查userinit.reg文件是否存在,如果提示找不到userinit.reg文件,那就需要重新拷贝,第三句是导入命令。这里因为regedit /s导入成功失败都没有提示,所以才加了第二句)

现在应该正常登陆了。

附:默认的windows xp屏保文件是logon.scr文件,图片收藏幻灯片屏保是ssmypics.scr文件,飞跃星空是ssstars.scr文件,字幕是ssmarpue.scr文件等

系统正常后,先将刚才改名的ssmypics.scr文件名恢复为cmd.exe,再将1.scr恢复为ssmypics.scr。当然也可以将1.scr直接删除,系统会从dllcache里恢复出ssmypics.scr的。


上面提供的userinit.reg注册表修复文件里面包括有对UIHost、Shell、Userinit的修复。
页: [1]
查看完整版本: 系统反复自动注销的解决方案