转载自http://blogs.itecn.net/blogs/shehuayu/archive/2010 /07/17/dig-into-windows-7.aspx
在装好Windows 7 之后,相信有很多人跟笔者一样,会陆陆续续再装一些影音文件播放器,例如 KMPlayer、QQ影音、千千静听、暴风影音等等。久而久之,突然某一天,您可能发现在资源管理器中,一些诸如 avi、wmv、mpeg 、asf等格式的视频文件的缩略图不再显示,只能显示一个大大的图标,就像下面这样:
当然,上面的内容只是一个引子,由于时间久远,笔者发现不及时,已经无从评估究竟是哪一款软件引发的问题。据网友反映,很多人在卸载暴风影音后,视频缩略图恢复正常,不过,笔者并未使用过此软件。但笔者认为,一般是这样的第三方的媒体播放器或解码软件软件造成了该问题。
下面,我们一起来深入研究这个问题的背后的根层原因是什么。
我们使用 Sysinternals 的利器 ProcessMonitor 对打开视频文件夹时的Windows 资源管理器进程 explorer.exe 进行一个监控,结果如下:
我们可以发现,它除了在最后操作文件以外,之前都是访问一系列的注册表项目。因此,我们可以锁定该错误的诱因是位于系统注册表的。
进一步观察我们可以发现,就关于这个.asf格式的注册表项,既有 HKCU 的部分,也有 HKCR 的部分。由于笔者新建了一个用户账户进行测试,仍不能正常显示视频文件缩略图,故可以排除 HKCU 的可能,问题的原因就应该在 HKCR 部分的文件类型注册项目。
这里必须有个说明,就是本文所讨论的这个不显示视频文件缩略图的现象是一个系统软件环境错误,而不是Windows 的功能选项效果。也就是说,您必须确保您的"文件夹选项"里面被正确配置为显示文件缩略图(但缩略图却偏偏显示不出来):
如上图所示,您必须确保高亮部分--"始终显示图标,从不显示缩略图"一项前的复选框处于清空状态。
好了,我们接下来定位至注册表 HKEY_CLASSES_ROOT 区域下面的 .asf 部分,看到如图所示的情景:
通过比对虚拟机中的Windows 7 以及比对能够显示缩略图的注册文件类型,我才发现这里 ShellEx 下两个 GUID 项目下的"默认"键值被莫名地清空了,什么也没有。于是,我们就找到了问题的所在。其实,Windows 资源管理器不能显示视频缩略图的根本原因就是 ShellEx 下面的两个 GUID 项目值缺失导致的。这里,我们以文本形式展示一下问题注册表和虚机中正常注册表关于 .asf 项目的对比: 出现问题的注册表 .asf 项 正常 / 默认的注册表 .asf 项[HKEY_CLASSES_ROOT\.asf] @="KMPlayer.asf" "PerceivedType"="video" "Content Type"="video/x-ms-asf" "KMPBackup.bak"="WMP11.AssocFile.ASF" [HKEY_CLASSES_ROOT\.asf\OpenWithProgIds] "WindowsLive.PhotoGallery.video.15.3"="" "WindowsLive.MovieMaker.asset"=hex: [HKEY_CLASSES_ROOT\.asf\ShellEx] [HKEY_CLASSES_ROOT\.asf\ShellEx\{BB2E617C-0920-11D 1-9A0B-00C04FC2D6C1}] @="" [HKEY_CLASSES_ROOT\.asf\ShellEx\{e357fccd-a995-457 6-b01f-234630154e96}] @="" [HKEY_CLASSES_ROOT\.asf] @="WMP11.AssocFile.ASF" "PerceivedType"="video" "Content Type"="video/x-ms-asf" [HKEY_CLASSES_ROOT\.asf\OpenWithProgIds] "WMP11.AssocFile.ASF"=hex(0): [HKEY_CLASSES_ROOT\.asf\PersistentHandler] @="{098f2470-bae0-11cd-b579-08002b30bfeb}" [HKEY_CLASSES_ROOT\.asf\ShellEx] [HKEY_CLASSES_ROOT\.asf\ShellEx\{BB2E617C-0920-11D 1-9A0B-00C04FC2D6C1}] @="{9DBD2C50-62AD-11D0-B806-00C04FD706EC}" [HKEY_CLASSES_ROOT\.asf\ShellEx\{e357fccd-a995-457 6-b01f-234630154e96}] @="{9DBD2C50-62AD-11D0-B806-00C04FD706EC}