今天过来的时候发现Windows 7又“黑屏”了。这个“黑屏”,就是我这几个月以来用Windows 7最最最惨痛的记忆。每次我把系统兴冲冲的加入公司域之后,然后重启几次,就会出现这样的问题。
这个“黑屏”问题不是大家所熟知的微软对盗版受害者所采取的“保护措施”,实际上是在我输入密码之后,无法显示桌面,在Windows 7默认设置之下,整个屏幕都是黑色的。在登录之前,登录界面上的所有功能完全正常,没有问题。
之前我遇到过两次同样的问题,一直没能找到问题的原因。由于这个电脑是我在公司唯一的一台电脑,我不可能停工N天搞定这个问题,因此之前的做法都是直接重装系统了事。不过,事不过三对吧,今天再不搞定这个问题,以后会浪费我更多的时间。
根据以前的经验,出现这种情况的时候我还是可以登录安全模式,这次也不例外。在安全模式中,我尝试在事件查看器中找到蛛丝马迹。
首先怀疑的是Windows系统日志中的一条错误:
无法找到来自源 volsnap 的事件 ID 25 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。
如果该事件产生于另一台计算机,则必须在该事件中保存显示信息。
这条日志在黑屏的时候发生,而且内容很诡异。不过上网搜索之后发现,这个问题无关紧要,是域控制器和Windows 7不兼容导致,这也许是一个Windows 7 RTM的一个bug。这个日志在正常启动时候也出现过,而且与用户登录无关。
之后又排除几个系统日志的错误,发现陷入僵局,甚至想放弃了。不过这个时候突然想到,会不会在其他的日志中可以找到答案。于是我去看了看应用程序日志,果然,有一个警告级别的错误十分可疑:
Windows 登录进程未能衍生用户应用程序。应用程序名称: 。命令行参数: C:\Windows\system32\userinit.exe。
事件ID:4006
从症状上来看,“黑屏”问题的确就是userinit无法启动,那么当务之急当然是找到这个问题的解决方法。
通过搜索,我找到userinit无法启动的原因说明,是因为某个服务耗尽系统资源所致,我也找到了解决方法,不过发现按照这些介绍无法解决问题。后来,突然留意到一句话:
如果您使用具有管理权限的帐户登录到计算机,不会发生此问题。
的确,我可以登录安全模式,安全模式就是以管理员权限登录的,因此始终以管理员权限登录就没问题了。这样,答案就呼之欲出:关闭UAC。
果然,关闭之后一起就恢复原装,可爱的Windows 7桌面又回来了,我省去了一次麻烦的重装。
不过事情并没有完,我还没有找到罪魁祸首,之后需要用排除法抓出这个讨厌的服务。此外,我留意到在加域时,公司内部ITE的脚本里有一个主动关闭UAC的动作,莫非这个事情是已知问题?这个我要再去问问公司的同事。
UPDATE:已经发现罪魁祸首了,是Norton的一个驱动未签名,在UAC启动的情况下阻止userinit进程创建用户进程。据微软技术支持说,这是一个feature,为了保证域用户的安全性。如果不想卸载驱动,那么就必须关闭UAC。