Shell 扩展在 Windows 资源管理器中不起作用,但在其他程序中起作用?

发布于 2024-12-08 12:45:40 字数 669 浏览 0 评论 0原文

我使用 ATL 制作了 shell 扩展(实现 IContextMenuIShellExtInitIExtractIconIPersistFile),“按照书本”。

有趣的是,在某些文件管理器中一切都很好,例如“Total Commander”和“Total Commander”。 “Free Commander”,但在 Windows 资源管理器中完全失败:


当我在 TC(“Total Commander”)中右键单击我的注册文件(例如 *.000)时,扩展有效:我看到它在我的日志和上下文菜单中:出现带有图标的条目。

但如果我使用 Win-Explorer,什么也不会发生! 没有出现日志条目,上下文菜单中没有任何证据 - 什么也没有!即使完全重新启动电脑也无济于事。

我当然注册了 ShellEx\MyX\ContextMenuHandlersShellEx\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\IconHandlerkeys, 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最美不过初阳 2024-12-15 12:45:40

@SevaTitov 回答了我的问题,但作为评论,供任何偶然发现此问题的人将来参考:

@SevaTitov:

如果您的操作系统是 64 位,则资源管理器也将是 64 位,并且所有 shell 扩展也必须是 64 位。看起来当前版本的 Total Commander 仅是 32 位

就是这样,注册表重定向器,当您使用 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:

If your OS is 64 bit, the Explorer will be 64 bit as well, and all your shell extensions will have to be 64 bit as well. Looks like current version of Total Commander is 32 bit only

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)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文