2006年2月8日星期三

Windows2000关机慢故障一例

  欲快速查阅解决方案的朋友点击这里

  春节期间,从电脑城新买来的一台Celeron 4的电脑。拿回家先装上了Windows 2000的操作系统,然后是Office XP、Symantec AntiVirus 10(CHS)。新装的系统,一切都没有什么大问题,启动也很快。可惟独就是关机的时候(包括重启系统、注销)速度相当慢。每次都要在“保存系统”处停留数十秒,和以往装过的系统相比,明显是有问题。
  用超级兔子优化系统,屏蔽了注销时整理页面,也尝试过禁止系统关机时保存设置参数,但几乎没有效果。检查了开机时运行的程序,去掉了所有不必要的程序,仍然在关机时有近一分钟的延迟。最后决定查看系统日志,终于发现了问题所在。

  根据系统日志显示,在关机的时候,Userenv.dll出现了EventID为1000的错误。从错误的注释看,是在注销用户时出现了对文件无访问权限的情况。在网络上查找EventID:1000的troubleshooting,根据众人的说法,除了Windows本身的bug,最大的嫌疑就是AV(AntiVirus)软件。有不少的报告显示,安装了Symantec/Norton AntiVirus或McAfee的用户就经常遇到这个问题。据说是因为在注销用户时,要访问的文件被这些杀毒软件给锁定掉了,因此导致了Userenv.dll在60秒内一直尝试。
  另外,Office XP/2003似乎也在里面扮演了某种角色,不过这个没有得到我的验证。得到我的验证的是,当我把Symantec AntiVirus服务停掉之后(或Kill掉Rtvscan.exe进程),关机就不会出现延迟了。我另一台电脑上的Symantec AntiVirus 7.6(ENG)没有出现这个问题。而根据一个帖子所述,在停掉Symantec AntiVirus 8.x的文件实时防护之后,问题也不出现了。但在我的10版本上,这样做没有效果,必须停服务,因此我觉得这个问题也和Symantec的版本有关。

  不可能让系统在没有防毒软件的保护下运行啊!而我又不想把Symantec AntiVirus 给降级。因此只有考虑在关机时先停掉Symantec AntiVirus服务。反正那时候也不可能有文件型病毒侵袭了。为此,准备好一个批处理程序stopav.bat,内容如下:
@net stop "Symantec AntiVirus"
  然后,直接运行gpedit.msc,打开“用户配置”->“Windows设置”->“脚本 - (登录/注销)”->“注销”。添加那个批处理程序stopav.bat。在这之前,最好把该文件放到C:\WINNT\system32\GroupPolicy\User\Scripts下面。
  现在,关机之前,会先运行这个注销脚本。由于要先停一个服务,大约需要两、三秒,关机速度没有别的机器快,但起码也可以接受了。

后记
  ……
  说实话,我不相信国内没有人遇到这个问题,也不相信没有人解决过。但是我在中文网站上搜查的结果,除了寥寥可数的几个发问帖之外,没有什么有价值的信息。最有用处的信息,还是有人在google论坛上转贴的一份英文的讨论长帖。虽然在英文网站中做搜查时,第一页就可以找到这份讨论帖的原稿,但我还是想对这位仁兄致敬!
  用Userenv.dll搜查,倒是出来很多网页。对我没有什么帮助,但是它们的内容却都是几乎一模一样的,明显源自一处。真不知道什么时候国内的IT才能不那么浮躁。

  再后记
  ……
  时光飞逝,日月如梭。这件事情转眼间过去一年多了。我要承认当时的我还是不够成熟,所以写下了上面这些文字。虽然在文章中我准确地抓住了问题的本质,但是给出的解决方案并不是最优的。有时候,直来直往并不一定是最短路径,直接针对问题本身进行修改,也不一定是最好的选择。更好的解决方案如下:
  运行gpedit.msc,打开“计算机配置”->“管理模版”->“系统”->“登录”(WindowsXP系统在“用户配置文件”中)->“卸载和更新用户配置文件的最大重试次数”,把这个配置项启用,并设置为“1次”(默认是60次)。这样,当Userenv.dll卸载失败第一次以后,就不再重试,也就不需要等待60秒了。
  这个解决方案并没有解决故障的原因本身。它采取了绕过、回避的办法。然而,不解决故障的原因并没有什么明显的负面效应,反而节省了前面那个解决方案在停止服务时所需要消耗的两、三秒的时间,所以在实际效果上反而更优。
  其实,我知道这个办法已经很久了。在本文前面部分载出后不久,就有国内的朋友指出了刚才提到的这个更好的解决办法。而自己一直以来也都采用了这种更为简便高效的处理方法解决问题。但是我并不想把整篇文章全部改掉。我还是觉得,由此可以看出国内外技术人士在思维和处事方面的不同之处。无意去评论这之间的优劣,仅作记念吧。

没有评论:

发表评论