Userinit.exe

来源:互联网 发布:淘宝3d试衣技术 编辑:程序博客网 时间:2024/04/20 06:11
     每次开机,在刚进入桌面的时候,系统都会运作十几秒钟才能响应用户的请求,如果打开“任务管理器”则会发现,此时系统在运行的进程是“Userinit.exe”,显然这是一个系统初始化程序。但是,以前这个进程不是这么慢的,所以我想是否能优化以下,于是……
      首先上网查了一下Userinit.exe的进程信息,为“运行登陆脚本,建立网络连接和启动Shell壳”,非系统进程。我理解,这个shell也许是桌面的shell,会影响Explorer,而网络连接无所谓。于是进入注册表搜索了一下Userinit.exe,与启动有关的只有一项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]下"Userinit"="C:\\WINDOWS\\system32\\userinit.exe,"
      这个键值我见过,有些病毒就在这里(逗号后面)做手脚。我想开机不运行这个进程试试,于是将该分支做了备份放到桌面,删除该键值,重新启动系统,没想到……
      系统启动到欢迎界面都一切正常,之后出现了选择登陆用户界面(我原来设置是直接进入系统桌面),点击用户名,开始“加载个人设置”,可是刚加载几秒钟,提示又变成了“正在保存设置”、“正在注销”,又回到了用户选择界面!Administrator用户也是一样,登陆就注销,无法进入(后来才明白这就是所谓的“运行登陆脚本”)。当时我并不是很着急,因为毕竟做了备份。
     知道了这个进程的重要性,我开始进行恢复工作
1.进入安全模式,想在安全模式下导回删去的键值。没想到在安全模式下的选择用户界面下也遇到同样的问题。
2.恢复上一次正确配置,但是其实无法启动并不是因为配置不正确,所以恢复的就是已经启动不起来的系统。
3.进入命令提示行模式,但这还是需要先登陆用户。
4.用软盘启动进入DOS,但无法运行regedit等命令,甚至无法看到备份文件,因为该文件在“桌面”的中文路径下。
5.找光盘启动,失败,后来发现是由于我的DVD光驱默认将跳线置于“Slave”,寒!
6.拆机箱,将跳线设置为“Master”,用Windows2003光盘启动到控制台,但是命令有限,无法修改注册表。
      至此,简单的修复方法均告失败!

备选方案:
1.在DOS中编写C程序修改注册表,在Boot.ini之类的文件中执行,但不知道Userinit的执行顺序如何。
2.将硬盘挂到别人的电脑上,修改注册表。但不知regedit能否修改非启动盘的注册表文件。
3.恢复镜像。但我上一次镜像在3个月前,这之间新装了不少于毕设相关的软件,如果恢复,之后也很麻烦。而且这种方法技术含量比较低,如果实在没办法了,这才是最后的方案。

      没有办法,开始电话求助A.E.。他的思路也大致相同,反复讨论后,他想到了“深山红叶”,并在他的虚拟机上试验成功,可以修改本机注册表。于是跑去他家拿了一张CD-RW,回家恢复成功!
      有关“深山红叶”过些日子我再仔细介绍,因为现在我也不太了解~~

经过这件事,得到以下经验教训
      1.备份不要做到中文路径下;
      2.多准备些修复工具,尤其是DOS下的;
      3.其实可以改Userinit.exe文件名的,这样修复起来,文件操作总比注册表操作容易的多;
      4.系统大改动之后GHOST备份,比如装了很多毕设软件之后(其实我不到半年一次备份也算勤了吧……)。

 

============================

原文时间:2005.05.12
原文地址:http://mnky.bokee.com/1496602.html