Getting right click menus to work in 64-bit Windows Explorer

Shells extensions are components that extend the functionality of Windows. The most common type is contextual menus that appear when you right click on items in Windows Explorer. For example, an archive utility can add itself to the menu to allow you to easily pack and unpack files by just right clicking on them. There is a whole bunch of extension types in addition to context menus.

A typical context menu shell extensions in Windows Explorer.

A typical context menu with several shell extensions in Windows Explorer.

With 64-bit Windows becoming the mainstream, a problem has emerged regarding such shell extensions. Since they hook into the Explorer process itself, they require using the same architecture as the Explorer process. In other words, a 32-bit extension is not able to show in 64-bit Explorer (and vice verse).

The obvious solution is for software authors to update their extensions, building 64-bit versions alongside the 32-bit version. In addition to this they also have to handle the installation process and other details to choose the right version depending on the operating system being used. As you can see, it is quite a lot of work for the developer, and not everyone is willing to put in the time.

Another problem is the one I have encountered in my program Flash Renamer. The shell extension in Flash Renamer was developed in a programming language owned by Microsoft, but Microsoft suddenly decided to stop updating it, and never made a 64-bit version of the language. There is no way for me to update the shell extension to 64-bit. The only solution would be to completely re-write the extension in another language, which is far from easy and quite time consuming.

I can think of more problems. No all developers have yet had the time to update their software even if they wanted to. Shell extensions are difficult to develop, and the software company or division might have lost the competency. Then there’s abandoned software and software past its support term that is no longer being updated.

So, if an extension you want is only available as 32-bit and you use 64-bit Windows, what can you do? Here are some solutions I have come across:

  • The reason 32-bit extensions do not work is because Windows Explorer is 64-bit. But if you use another file manager, such as Total Commander, the shell extensions will show up (provided it is 32-bit and supports shell extensions)!
  • Microsoft recommends using 32-bit Explorer, which is still included in 64-bit Windows. I never got this to work myself though.
  • One of my users told me about an interesting little program called WOW64Menu. It acts as a bridge between 64- and 32-bit, allowing you to show the old menus!
  • Try to find another solution to your problem. For example, add your program to the send-to menu (%APPDATA%\Microsoft\Windows\SendTo) to be able to open files with the program that way instead of through the shell extension.
  • For the more advanced users: An idea I had was to try and find a “generic” shell extension that allows you to customize the menu content. Then you could adapt it to work with your program using the command line interface.

There is not a perfect solution that I know of, but hopefully one of these is enough to solve your problem. If you have of another solution, please share in the comments!

This entry was posted in Tutorials and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *