3

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

无论我做什么,我都无法让它发挥作用。我有 Microsoft 的FileTypeVerifier.exe工具,它为使用提供了绿灯IInitializeWithItem,但是当资源管理器调用它时,它似乎只尝试IInitializeWithStream过。(这是通过临时实现所述接口并在其中发出 Beep() 来测试的Initialize())我是否忘记配置某些东西?

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

4

1 回答 1

6

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

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

  • HKEY_CLASSES_ROOT

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

      DisableProcessIsolation = 1

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

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

于 2009-11-15T04:13:11.977 回答