生面孔和熟面孔

在Windows Vista的资源管理器中,有一项很实用的功能:文件预览。简单来说,在打开该功能后,不用双击文件,只要单击将文件选中,文件的内容就会出现在资源管理器窗口右侧的预览窗格内。如果某个文件夹中包含了较多名称无规律的文件,那么通过这个功能,就可以更容易地找到自己需要的文件。

资源管理器的预览功能默认并没有打开,需要按照下列方法启用:在资源管理器窗口中,单击工具栏上的”组织”按钮,指向”布局”,在布局子菜单下选择”预览窗格”,随后窗口右侧就会出现预览窗格。而单击选中的文件的预览内容就会出现在预览窗格内(如图1所示)。

图1,启用预览窗格,对常见文件格式进行预览

虽然预览功能很实用,但却有一个不大不小的问题:并非所有类型的文件都可以被预览。同是可以双击打开并查看的文件类型,为什么待遇各不相同?难道预览功能也认生?

其实这个主要取决于预览工作的工作原理,如果某个文件类型在给系统中注册时,同时注册了用于负责预览工作的预览器(Preview Handler),那么这种类型的文件就可以被Vista的资源管理器预览。例如,在安装8.1版本以上的Adobe Reaer阅读器时,安装程序会自动在系统中注册.pdf这个文件格式,同时还会注册相应的预览器,因此双击.pdf文件时,系统会盗用Adobe Reader程序打开该文件;而单击.pdf文件时,系统就会调用注册的预览器在预览窗格内显示预览内容。

因此问题很明显了,如果某种类型的文件格式无法预览,那是因为没有注册相应的预览器。对于有编程基础的朋友,完全可以根据自己的实际需要为某种文件类型编写预览器,详细信息请参考这里:http://msdn.microsoft.com/zh-cn/magazine/cc163487.aspx 。当然,网络上有很多热心人提供了自己为某些文件类型编写的预览器,我们可以直接下载使用。不过本文重点要说的是,如何进一步扩展系统中现有预览器的功能,以便预览更多类型的文件。

首先可以做一个试验,在硬盘上新建一个.txt格式的文本文件,输入一些内容,然后保存。随后打开预览窗格,并选中这个文本文件,很明显,.txt格式可以被预览。那么如果我们把这个文件的扩展名改掉,会发生什么情况?例如将.txt改成.bat,很多人在编写脚本的时候其实也就是这样做的,创建纯文本文件,输入要包含在脚本中的命令,然后将纯文本文件的扩展名改为.bat或.cmd。可是在单击这样的文件后,并不能预览其中的内容。可见,虽然文件的内容没有变,但因为扩展名变了,因此预览功能无法进行预览。

让我们一起来以.bat类型的文件为例,介绍一下如何修改系统,才能实现预览。

首先请运行Regedit打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PreviewHandlers,这里列出了一些可以调用的现成预览器(如图2)所示,同时如果系统中安装的某些程序带有自己的预览器,那么也可能会出现在这里。

图2,系统中现有的预览器

前面已经说了,.bat文件实际上就是文本文件,只不过使用了不同的扩展名,因此可以猜测,只要让Windows”认为”.bat等同于.txt,那么预览功能就可以调用.txt文件类型的预览器,对.bat文件进行预览。

请注意图2中显示的现有预览器,其中有一个注册表值的数值是”Microsoft Windows TXT Preview Handler”,顾名思义,这就是.txt文件类型的预览器,而这个预览器的类ID(也就是对应注册表值的名称)是”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”,请将这一串数字记录下来。

还是在注册表编辑器内,因为要处理的是.bat文件,因此请定位到HKEY_CLASSES_ROOT\.bat,并查看该项下默认值对应的数据(如图3所示),例如对于.bat文件,其数据是”batfile”,这也是.bat文件的Prog ID。在找到所需的Prog ID后,定位到HKEY_CLASSES_ROOT\Prog ID键下,这里的”Prog ID”就是之前记录的”batfile”。在HKEY_CLASSES_ROOT\batfile下新建一个名为”shellex”的子项(如果shellex已存在,可跳过这一步),并在shellex子项下新建一个名为”{8895b1c6-b41f-4c1c-a562-0d564250836f}”的项。

创建完毕后,单击选中”{8895b1c6-b41f-4c1c-a562-0d564250836f}”项,右侧窗格中会显示一个已经建立好的”默认”值,双击该值,将其数值设置为”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”,如图3所示。

图3,为特定的文件类型指定要使用的预览器

这里的”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”又是什么?其实很多人可能已经想到了,就是本文一开头在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PreviewHandlers下看到的用于预览.txt文件的预览器。至此,系统已经可以对.bat扩展名的文件进行预览(如图4所示)。

图4,通过手工添加预览器,系统已经可以对.bat文件进行预览

其实通过上文的了解可以知道,如果希望扩展系统中现有预览器的功能,只需要一个很简单的思路就可以做到:首先,根据具体的文件类型,决定要使用哪个预览器,并获取预览器的类ID(本例中是”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”)。随后,根据要预览的文件类型,在注册表中获取该文件类型的Prog ID(本例中是”batfile”)。接着在Prog ID对应的注册表键中创建用于触发预览器的子项(本例中是”{8895b1c6-b41f-4c1c-a562-0d564250836f}”)。最后,在这个子项下,将默认值的数值修改为用于预览这种类型文件所用的预览器的类ID即可。在设置完毕后,如果操作无误,甚至不需要重启动系统,只要重启动资源管理器窗口,对注册表的变动就可以生效了。

那么怎么知道自己希望预览的文件类型到底需要使用哪种预览器?其实也很简单,只要图1中列举的这些预览器对应的程序可以打开想要预览的文件类型,那么就可以使用。举例来说,假设某个文件夹中保存有很多.reg文件,希望对内容进行预览,那么我们都知道,因为可以直接用Windows自带的记事本打开并查看.reg文件的内容(当然不是直接双击.reg文件,而是首先打开一个记事本程序的窗口,然后用鼠标将.reg文件拖放到这个窗口上),因此就可以将”Microsoft Windows TXT Preview Handler”用做.reg文件的预览器。同理,在安装了必要的视频解码器后,可以使用Windows Media Player打开.mkv格式的视频文件,因此就可以将”Windows Media Player Rich Preview Handler”用做.mkv格式的预览器。

分享:

《生面孔和熟面孔》有2个想法

  1. 在我的win7上市了一下,只需做以下操作即可实现资源管理器预览:还是在注册表编辑器内,因为要处理的是.bat文件,因此请定位到HKEY_CLASSES_ROOT\.bat,并查看该项下默认值对应的数据(如图3所示),例如对于.bat文件,其数据是”batfile”,这也是.bat文件的Prog ID。在找到所需的Prog ID后,定位到HKEY_CLASSES_ROOT\Prog ID键下,这里的”Prog ID”就是之前记录的”batfile”。在HKEY_CLASSES_ROOT\batfile下新建一个名为”shellex”的子项(如果shellex已存在,可跳过这一步),并在shellex子项下新建一个名为”{8895b1c6-b41f-4c1c-a562-0d564250836f}”的项。

    创建完毕后,单击选中”{8895b1c6-b41f-4c1c-a562-0d564250836f}”项,右侧窗格中会显示一个已经建立好的”默认”值,双击该值,将其数值设置为”{1531d583-8375-4d3f-b5fb-d23bbd169f22}”,如图3所示。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

发表评论前,先做个简单的数学题吧: * Time limit is exhausted. Please reload CAPTCHA.