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秒了。
  这个解决方案并没有解决故障的原因本身。它采取了绕过、回避的办法。然而,不解决故障的原因并没有什么明显的负面效应,反而节省了前面那个解决方案在停止服务时所需要消耗的两、三秒的时间,所以在实际效果上反而更优。
  其实,我知道这个办法已经很久了。在本文前面部分载出后不久,就有国内的朋友指出了刚才提到的这个更好的解决办法。而自己一直以来也都采用了这种更为简便高效的处理方法解决问题。但是我并不想把整篇文章全部改掉。我还是觉得,由此可以看出国内外技术人士在思维和处事方面的不同之处。无意去评论这之间的优劣,仅作记念吧。

2006年2月5日星期日

家里新买了台电脑

  昨天晚上一查回厦门的飞机票。嗬,乖乖,只有7号的才有卖了,还是全价。于是多了两天时间出来,决定还是要去买电脑。虽然家里原来那台电脑似乎就这样就被修好了,这些天里再也没有出毛病。但是我还是不是很放心。万一我要是刚回厦门,这家伙又不听话了,那这次回来花的两张全价机票钱岂不是很亏?
  在家里和父母商量好了,电脑钱肯定是他们出,只买能满足他们的要求的档次就行。上网、看电视、看碟、听歌、看电子书、Skype、MSN、Foxmail……,要满足这些要求倒是花不了什么钱。现在这年头买电脑,除了象平面设计、3D设计这样的工作之外,也就数玩游戏需要烧点钱了。
  来到电脑城,临时决定再买一个宽带路由器。如果两台机器了,如果还按照目前的网络结构,就必须要拿一台开着做服务器,另一台才能上网。虽然这样也成,但原来那台服务器现在已经让我觉得不那么可靠了。万一它挂了,那还要拔网线,还要更改网络设置,这些我父母两个如何搞得定?一打听,原来现在低端货的行情才百来块钱了,也行,先弄个用用。
  给电脑报配置的MM蛮激动的,不过我的要求大概多少有点让她失望。低档配置不容易赚到钱的,不过我还是应她的意思用了她们店里代理的显示器和主板。优派的显示器我是比较喜欢的,而且反正这次也是用CRT,我也是轻车熟路。老爸老妈要用它当电视用,LCD如何胜任得了这个工作?
  主板是华擎的板子,我其实不太喜欢的。以前看到过一篇软文,就是华擎找人写的。作者水平极差,配出来的配置狗屁不通。别的不说,居然用AGP的板子上PCI-E的显卡。不知道是不是它的对头搞的鬼——我倒觉得这很可能,不过,总是给我落下了极不好的印象。好在今天看过东西之后,觉得做工和设计还行。想想人家的利润也就在这里头,如果硬抠的话,要不报高价,要不就耍花样,还是算了。
  CPU最后决定用Celeron 4的。原本我是打算用Celeron D,可一看现在到处都卖64位的Celeron D。要买478pins的Celeron D吧?夹在中间感觉有点不伦不类,而且似乎Celeron 4就足以对付我的需求了。可要真买64位的片子,又觉得心有不甘——抢最新是永远不可能的,却说不定只是给别人当免费测试员。不过,无论如何,心里还是有点别扭。半年多前配的机器,就在用Celeron D,今天却比它的配置还要低,仿佛时光倒转呢。
  内存肯定是512M了。我甚至动过上512M×2的念头,可惜因为节后条子涨价只好作罢。如果以后要加,可能就直接加1G或更高的容量了。我对于内存的容量对系统性能的影响,是有着深刻的认识的。因此两年前给别人配机器时就硬要求一定要512M。当时条子也还算便宜,但是大多数人都觉得没必要用512M的,能省则省嘛。现在效果出来了。那时配的256M的机器,现在跑着XP干点重活就吃力。512M的机器就Happy多了,而且它以后还可以至少再加到一个G去,再扛两年应该都没太大问题。
  硬盘我一张口就要了160G。MM叫起来,“这么大干嘛?”真的会大吗?我家里现在就是40+80了。两年前配的电脑也是80G的硬盘。而现在笔记本都流行60G了,我难道还守着80G不放?我知道,现在DVDRip的文件都是个顶个的大。人人都追求画质,以前那种一张CD放满周星驰的全部电影的时代已经慢慢远去了。
  电视卡便宜得出乎我的意料。不过很快又能理解了。原因同上。现在都是在追求SDTV、HDTV的时代了,那种电视卡才会稍微贵一点。现在这种三百来线清晰度的节目,谁还希罕啊?卖个一百块算不错了。
  DVD-RW也变得这么便宜了,我也是没有料到。才四百块不到,不过估计是比较低端的品种。不过我是没有那种需求,在家里偶尔刻刻CD就行了。现在买DVD-RW,价格不便宜,别人还不一定能用,还只能自己收着。等哪天大家的电脑上至少都是DVD光驱了,再说吧。
  最后算下来,3720。我把计算器推到MM面前,说今天我们存心要买,让她报个最终价格。她不肯,我笑着告诉她,我是老手了,这是老规矩了咋不懂呢?最后报了3680,才那么一点点,我以为会报3650呢。一天算10块钱,还蛮好玩的嘛。也罢,这么点钱,懒得和她砍七砍八。成交!