Here are some resources for troubleshooting
issues with ShellBoost.
Check the Project characteristics in the web
site. Setting the SFGAO_HIDDEN characteristic for example will, as the name
suggests, hide your extension. You should only change these for valid reasons.
The default settings are the following: SFGAO_STORAGE, SFGAO_DROPTARGET,
SFGAO_STREAM, SFGAO_STORAGEANCESTOR, SFGAO_FOLDER, SFGAO_HASSUBFOLDER.
If you reset those characteristics, you must
unregister what you have registered first, download the new binaries, and
The Shell/Explorer keeps many things in a
private cache, so sometimes, you’ll have to reset it. You can kill all the
explorer.exe processes (make sure they are all gone using a tool such as the
Task Manager) or use the hidden “Exit Explorer” menu trick described here https://www.howtogeek.com/198815/use-this-secret-trick-to-close-and-restart-explorer.exe-in-windows/
Sometimes you’ll have to restart your session or
even reboot, but that should be exceptional.
There are not always solutions to this as,
ultimately, applications host the Common Dialog; The loading process is the
application one, not explorer.exe. They can therefore customize it the way they
One common case of issues is applications that
restrict the Common Dialog views to file system Shell Items only. They can do
this with the IFileDialog::SetOptions method: https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifiledialog-setoptions using the FOS_FORCEFILESYSTEM flag. In this case, your extension
will only be shown if it’s declared as a file system one using its project characteristics.
All folders under the root will also have to be file system compatible.
Even if your extension is fully file system
compliant (exposes what ShellBoost call “physical items”), some applications
may still fail for various reason purely depending on the way they are coded.
You will have to test your extension with
application you wish to target (Office applications, notepad, Adobe Reader,
In general, Drag & Drop and Copy & Paste
operations are better alternatives to Common Dialogs because the use a more
standard clipboard protocol. For example, Drag & Drop outlook message or
attachment from message is demonstrated in the Physical Overview sample.
Another issue you can face is some applications
are compiled as 32-bit binaries and therefore use Common Dialogs in 32-bit as
well. If your extension runs in a 64-bit OS and you have not registered your
extension for the 32-bit world, the Common Dialog will not be able to reach
your Shell Folder Server application (even if it’s compiled as “Any Cpu”) and
will not display its items. Check the “Intel 32 and 64-bit support” chapter for
more on this.
Preview images are supported through the Windows
Shell’s native IPreviewHandler COM interface. Some preview handlers are
provided by Windows (image, simple text, etc.) while others are provided by 3rd
party binaries (PDF files, etc.). Handlers are also supposed to implement one
of the 3 following native COM interfaces: IInitializeWithStream
(strongly preferred and recommended by Microsoft), IInitializeWithFile,
Some handlers are not capable of loading Shell
Items that are not physical file because they simply don’t implement IInitializeWithStream
(uses a stream that can come from anywhere) but IInitializeWithFile (uses
a physical file) instead which is the legacy interface.
For these legacy handlers, you’ll have to
provide physical Shell Items for the handler to work.
To check if your namespace extension works
properly with a stream, you can install and test the Microsoft official “Recipe
Preview Handler Sample” https://docs.microsoft.com/en-us/windows/win32/shell/samples-recipepreviewhandler . Just add a .recipe file corresponding to the expected format in a
folder in your namespace extension and test this item has a correct preview
Another issue you can face is some handlers are
compiled as 32-bit binaries. If your extension runs in a 64-bit OS and you have
not registered your extension for the 32-bit world, the preview handler will
not be able to reach your Shell Folder Server (even if it’s compiled as “Any
Cpu”). Check the “Intel 32 and 64-bit support” chapter for more on this.