问题描述
我 的同事喜欢跟随“潮流”(实际上人挺菜的),听我讲起微软最新出的office 2007软件,就也安装了一个,在体验到了Office 2007精美的界面后,她很快就喜欢上了,但是这几天又突然向我抱怨Outlook 2007了,她在打开Outlook2007后,没过多久Outlook就失去了响应,系统提示“Outlook 已停止工作 windows正在检查该问题的解决方案”,然后自动关闭了。我马上想到了用 sysinternals 随后我想到了日志,在eventvwr.msc中没有看到相关的日志,倒是打开“问题报告和解决方案”的时候,点击“查看问题历史记录”,看到了错误报 告。
gnaw0725注:这个错误报告是由 控制面板,要打开它有个简单的办法,您可以直接在开始搜索栏,输入“问题”,然后就可以搜索到它了。另外您也可以执行如下命令,打开它。
%systemroot%\system32\control.exe /name Microsoft.ProblemReportsAndSolutions
奥,这么长的命令怎么记得住?不用怕,用 start ++吧。
该报错内容如下:
产品 Microsoft office Outlook
问题 已停止工作
日期 2007/8/20 13:52
状态 未报告
问题签名
问题事件名称: APPCRASH
应用程序名: OUTLOOK.EXE
应用程序版本: 12.0.6023.5000
应用程序时间戳: 46574050
故障模块名称: StackHash_757e
故障模块版本: 6.0.6000.16386
故障模块时间戳: 4549bdc9
异常代码: c0000374
异常偏移量: 000af1c9
OS 版本: 6.0.6000.2.0.0.256.1
区域设置 ID: 2052
其他信息 1: 757e
其他信息 2: 5da28544f92a22e5d56c0b91b01a18b0
其他信息 3: 09b3
其他信息 4: 256f34f9755b7e6e969ea15c59857d57
处理过程
先按下 ctrl+shift+esc 打开任务管理器,尽量关闭应用程序和服务,特别是防病毒软件,启动 sysinternals processmonitor ,然后按下 ctrl+e,停止事件日志获取,然后按ctrl+x清除掉 processmonitor启动过程中获取的日志。现在日志获取窗口就空白了。
ok, 由于我同事说Outlook是启动之后一段时间,才出现错误的,那么为了避免捕获的日志量太大,我们等到outlook启动后,过一段时间,切换到 processmonitor窗口,按下 ctrl+e,开始日志捕获,一直到outlook出错后,windows错误报告搜集完毕,自行结束为止。
切换到processmonitor,按下 ctrl+e结束日志获取。整个过程大概2、3分钟,日志一共抓取 7 万余条,大概 1.44MB大小。
大家可能想,这么多日志该如何跟踪呢?难道要看的眼睛发花?不用着急,前面我们看到,outlook出错之后,window错误报告进程会启动生成错误报告,那么我们通过寻找该进程第一次出现的位置,然后向前找,就可以找到outlook出错的位置了。
我 们通过google搜索 Windows Problem Reporting ,可以知道该进程的名字是 WerFault.exe 。按下 ctrl+f,查找 WerFault.exe,找到后,可以看到 是 svchost 调用了它。然后往前查看日志。可以看到,outlook在读取archive.pst 并由此产生了 ~archive.pst.tmp。再往前看,看到 outlook 尝试调用 *.vwp文件,例如 C:\Windows\System32\mvoice.vwp 。其中在查询其 GUID 以及 映像文件扩展注册键值时,出现名称未找到的错误,经过google,发现这个vwp属于第三方的 Voxware 组件。
我于是很奇怪,难道是音频驱动程序或者第三方的组件导致 reminder.wav播放有问题?尝试用 media player直接播放该文件,果然media player停止了响应。
说到这里,我同事说周末的时候安装了暴风影音,outlook就出现这样的问题了,于是卸载暴风影音,但故障依旧。通过搜索google以及查找 outlook错误代码,得到了如下解决方法。