【发布时间】:2011-12-01 20:52:43
【问题描述】:
我使用 ATL 进行了 shell 扩展(实现了 IContextMenu、IShellExtInit、IExtractIcon 和 IPersistFile),“按书本”。
有趣的是,在“Total Commander”和“Free Commander”等文件管理器中一切正常,但在 Windows 的资源管理器中完全失败:
当我在 TC(“Total Commander”)中右键单击我的注册文件(例如 *.000)时,扩展程序有效:我在我的日志和上下文菜单中看到它:出现带有图标的条目。
但是如果我使用 Win-Explorer,什么都不会发生! 没有出现日志条目,上下文菜单中没有任何证据 - 没有!即使完全重启 PC 也无济于事。
我当然注册了ShellEx\MyX\ContextMenuHandlers和ShellEx\IconHandlerkeys,还有Explorer的...\Shell Extensions\Approved\,都指向我的CLSID。
我使用的是 Windows 7。
我在这里想念什么?
【问题讨论】:
-
64/32 位?如果您的操作系统是 64 位,则资源管理器也将是 64 位,并且您的所有 shell 扩展也必须是 64 位。看起来当前版本的 Total Commander 只有 32 位。
-
@SevaTitov:听起来不错。我使用 64 位操作系统,但编译和注册了 32 位应用程序。因此,我应该为 64 位 DLL 创建什么密钥而不是 InprocServer32?
-
只编译 64 位和 regsvr32 这个二进制文件。注册表项仍称为 InprocServer32。
-
@SevaTitov:是的!它有效,你是对的!我完全不知道Registry Redirector,这就是陷阱。
标签: windows com atl shell-extensions