在Vista中调试shell扩展的问题(IShellFolder)

时间:2009-03-08 16:19:30

标签: windows shell-extensions

我使用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文章。

2 个答案:

答案 0 :(得分:1)

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

检查此链接 Internet Explorer crashes when MSXML2::IXMLDOMDocumentPtr -> Release() is called

答案 1 :(得分:0)

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

有关verclsid.exe的详细信息,请参阅here