Windows如何将图标与资源管理器shell中的文件相关联?

时间:2010-02-25 17:58:35

标签: windows icons detection windows-shell windows-explorer

我安装了InDesign CS2和CS3。两者都使用扩展名为.indd的文件。 Windows如何知道使用哪个图标?它使用正确的图标,即CS2文件有cs2图标,CS3文件有CS3图标。

Windows如何知道如何执行此操作?

如何在程序中提取或使用此版本检测系统?

修改

感谢您的shell-extension-icon-handler答案。对我来说是新事物。但有什么方法可以连接到InDesign提供的IconHandler并使用它来检测InDesign文件的版本?

3 个答案:

答案 0 :(得分:5)

您需要编写一个Icon Handler shell扩展。请参阅IExtractIcon的{​​{3}}文档。基本机制是你创建一个shell扩展并为你想要的文件类型注册图标处理程序(查看HKEY_CLASSES_ROOT / .indd),然后shell加载你的处理程序,传递文件信息并请求一个图标作为回报。如果您想提供缩略图位图而不仅仅是图标,还有MSDN方法。

请注意,您需要特别小心编写shell扩展处理程序,因为任何内存泄漏或崩溃都可能会破坏资源管理器以及显示文件打开/保存对话框的任何其他应用程序。

答案 1 :(得分:2)

对于某些文件,它是HKEY_CLASSES_ROOT\<file extension here>\DefaultIcon注册表项,但大多数文件映射到更友好的名称,例如.pdf\(Default) - &gt; AcroExch.Document(如果安装了Adobe Reader)。

在这种情况下,您必须将注册表转到AcroExch.Document并查看

  • DefaultIcon就在那里
  • AcroExch.Document\CLSID\(Default)是一些GUID。然后,按照HKEY_CLASSES_ROOT\CLSID\<insert that guid here>,您会发现此密钥包含DefaultIcon

...而DefaultIcon是加载图标的位置。

希望足够清楚;)。我不知道你的特殊情况,但在注册表中应该有区别。

答案 2 :(得分:1)

几乎可以肯定安装shell icon extension handler。编写自己的知道如何以文档格式检测版本的文档格式不是很好或完全没有问题。