我使用ATL创建了一个Windows Shell扩展(Visual Studio 2008)。它有以下模块,每个模块都是一个单独的ATL简单对象,有自己的.rgs文件可供注册: -
以上在WinXP中工作正常,我可以在WinXP中调试此shell扩展。但是当我切换到Vista时,我只接受(2)和(4)的方法调用。驱动器在Windows资源管理器中创建,但单击它时不会调用基础方法。 虽然当我右键单击时我会调用(2),当我为文件或文件夹选择“属性”时,我会进入(4)的代码。
Vista上是否有(1)和(3)缺少的界面。我找不到有关在MSDN上编写Shell Extensions for Vista的完整详细文档。我已经阅读了关于shell扩展的CodeProject文章。
答案 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。