Troubleshooting guide

Here are some resources for troubleshooting issues with ShellBoost.

Issue: the ShellBoost Namespace Extension is not visible

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 register again.

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.

Issue: the ShellBoost Namespace Extension is not visible in Common Dialogs

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 want.

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, etc.).

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.

Issue: preview images (from preview handlers) are not displayed for items in a ShellBoost Namespace Extension

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, or IInitializeWithItem.

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 image.

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.