我使用ATL创建了一个Windows Shell扩展(Visual Studio 2008)。它有以下模块,每个模块都是一个单独的ATL简单对象,有自己的.rgs文件可供注册: -

  1. IShellFolder / IShellView - >对于Windows资源管理器中的虚拟驱动器
  2. IContextMenu / IShellExtInit - >对于弹出菜单文件和文件夹
  3. IShellIconOverlayIdentifier - 在文件和文件夹上显示叠加图标
  4. IShellPropSheetExt / IShellExtInit - >对于File&中的自定义属性页面文件夹的属性
  5. 以上在WinXP中工作正常,我可以在WinXP中调试此shell扩展。但是当我切换到Vista时,我只接受(2)和(4)的方法调用。驱动器在Windows资源管理器中创建,但单击它时不会调用基础方法。 虽然当我右键单击时,我会调用(2)并且当我选择“属性”时对于文件或文件夹,我进入(4)的代码。

    Vista上是否有(1)和(3)缺少的界面。我找不到有关在MSDN上编写Shell Extensions for Vista的完整详细文档。我已经阅读了关于shell扩展的CodeProject文章。

有帮助吗?

解决方案

问题是因为使用了Xml SMART指针。在调用Release()时遇到问题。

检查此链接 当MSXML2 :: IXMLDOMDocumentPtr - >时, Internet Explorer崩溃。 Release()被称为

其他提示

确保您的扩展正确处理初始化,否则verclsid.exe将不会让您的扩展程序加载。 verclsid.exe首先加载shell扩展并在它向shell发送'ok'之前快速检查它们,指示加载扩展是安全的。

有关verclsid.exe的详细信息,请参见此处

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top