Shell extension doesn't work in Windows-Explorer but works in other programs?
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, 开发者_StackOverflow中文版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 ?
@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)
精彩评论