Shell 扩展在 Windows 资源管理器中不起作用,但在其他程序中起作用?
我使用 ATL 制作了 shell 扩展(实现 IContextMenu
、IShellExtInit
、IExtractIcon
和 IPersistFile
),“按照书本”。
有趣的是,在某些文件管理器中一切都很好,例如“Total Commander”和“Total Commander”。 “Free Commander”,但在 Windows 资源管理器中完全失败:
当我在 TC(“Total Commander”)中右键单击我的注册文件(例如 *.000
)时,扩展有效:我看到它在我的日志和上下文菜单中:出现带有图标的条目。
但如果我使用 Win-Explorer,什么也不会发生! 没有出现日志条目,上下文菜单中没有任何证据 - 什么也没有!即使完全重新启动电脑也无济于事。
我当然注册了 ShellEx\MyX\ContextMenuHandlers
和 ShellEx\IconHandler
键,以及资源管理器的 ...\Shell Extensions\Approved\
,它们都指向我的CLSID
。 我使用 Windows 7。
我想念什么?
I made shell extension (implementing IContextMenu
, IShellExtInit
, IExtractIcon
& IPersistFile
) using ATL, "by the book".
The funny thing is that all is good in some files-managers such as "Total Commander" & "Free Commander", but completely fail in Windows' Explorer:
When I right click on my registered file (say *.000
) in TC ("Total Commander"), the extension works: I see it in my logs and in the context menu: the entry with its icon appear.
But if I use Win-Explorer, nothing happens! no log entry comes up, no evidence in the context menu - nothing! even a complete PC restart doesn't help.
I of course registered the ShellEx\MyX\ContextMenuHandlers
and ShellEx\IconHandler
keys, as well as the Explorer's ...\Shell Extensions\Approved\
, and they all point to my CLSID
.
I use Windows 7.
What do I miss here ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
@SevaTitov 回答了我的问题,但作为评论,供任何偶然发现此问题的人将来参考:
@SevaTitov:
就是这样,注册表重定向器,当您使用 32 位程序时,它会隐藏(“重定向”)64 位程序注册表项,反之亦然。
我很困惑,因为在我的 32 位注册表查看器应用程序中,我可以看到这些键,但没有意识到我只看到注册表的一部分(64 位部分必须使用 64 位查看器才能看到,例如64 位 Windows 计算机中的默认 regedit.exe)
@SevaTitov answered my question but as a comment, so for future references for anyone who stumbles upon this issue:
@SevaTitov:
There's that thing, Registry Redirector, that when you're in 32-bit program, it hides ("redirects") the 64-bit reg-entries, and vice versa.
I was confused because in my 32-bit registry-viewer-app I could see those keys, but was unaware that I only see a part of the registry (the 64-bit part has to be seen with a 64-bit viewer like the default regedit.exe in a 64-bit Windows machine)