IThumbnailProvider 和 IInitializeWithItem

Sti*_*gma 2 c++ com windows-shell thumbnails

我正在尝试开发一个IThumbnailProvider在 Windows 7 中使用的。由于这个特定的缩略图也将依赖于同一目录中的一些其他文件,我需要使用除IInitializeWithStream路径以外的其他东西来使用,这是IInitializeWithItem. (或者,我可以使用IInitializeWithFile,但这显然更令人不悦。)

无论我做什么,我都无法让它发挥作用。我有微软的FileTypeVerifier.exe工具,它允许使用IInitializeWithItem,但是当资源管理器调用它时,它似乎只是尝试IInitializeWithStream过。(这是通过临时实现所述接口进行测试的,并且 Beep() 在其中消失Initialize())我忘记配置什么了吗?

简而言之:我如何让它发挥作用?

Sti*_*gma 5

好吧,我终于知道是怎么回事了。引用MSDN 网站上的Building Thumbnail Providers链接:

在某些情况下,无法使用流进行初始化。在您的缩略图提供程序未实现 IInitializeWithStream 的情况下,它必须选择退出在隔离进程中运行,当流发生更改时,系统索引器默认将其放置在该进程中。要选择退出进程隔离功能,请设置以下注册表值。

  • HKEY_CLASSES_ROOT

    • CLSID
    • {66742402-F9B9-11D1-A202-0000F81FEDEE}

      禁用进程隔离= 1

我知道我的进程用完了,因为我在别处读到缩略图提供程序总是用完了。但是由于该特定代码段几乎位于所有 shell 扩展处理程序上,因此我将其解释为一项非常愉快的复制粘贴工作,因为它需要以我理解的方式在进程内运行。

而我错了。我希望这会在不久的将来对其他人有所帮助。:)