To write a ShellBoost shell namespace
extension, you’ll first need to download ShellBoost binaries. Follow these
Connect to the ShellBoost site: https://www.shellboost.com
Sign up and/or login. This is mandatory to be
able to get a free trial ShellBoost package;
Open to the upper right menu, and select the
“Projects” menu item;
You should see a sample project that has been
automatically created the first time you created your account on the ShellBoost
site. Note this project has an expiration date:
Click on “Download Project Files”. You should
get a .ZIP file that contains all necessary files. Among these files, you will
find two ShellBoost native proxy assemblies, with a name like “ShellBoost.<id>.x64.dll”
and “ShellBoost.<id>.x86.dll”. The <id> value is unique to your
If you’re not looking for advanced
configuration, this is all you need to get started.
The default project characteristics are fine
if you are starting with ShellBoost. However, if you choose to change the
project characteristics, you will see as screen like this:
This describes what you can change. Note
these changes will be embedded into the binaries you download. If you change
any option (including the expiration date, if it’s a trial version), you will
have to download the project files again, replace them in your development
project and redeploy them to your users, so, you should change wisely.
Name: it’s the
technical name, used like a human identifier (as opposed to the Identifier
which you cannot change).
it’s the name that the Windows Shell uses when it displays the extension.
tooltip that the Windows Shell uses when it must display a tooltip.
Refresh Button Text: the text of the “Refresh” button that the Windows Shell displays
when it cannot communicate with your program
Refresh Error Text: the error text that the Windows Shell displays, aside the
“Refresh” button, when it cannot communicate with your program
Icons: the set of
icons that’s used to display your extension in the Windows Shell.
is a set of technical attributes, detailed in the next chapter. These
attributes exist on all shell items, but must be defined also on the Shell
Namespace Extension root. There are documented on MSDN here: SFGAO
We will detail here the SFGAO attributes,
since they are important to understand, event when using ShellBoost. The
combination of selected attributes is a 32-bit integer bit map. In fact,
ShellBoost has a .NET enum named SFGAO in the ShellBoost.Core.WindowsShell
namespace that matches the native values, in case it would be needed. The most
used SFGAO values also have an equivalent .NET property in the ShellItem
ShellBoost Shell Item
Item Default Value
Folder Default Value
The specified items can be copied.
The specified items can be moved.
Shortcuts can be created for the specified items.
The specified items can be bound to an IStorage
Should not be changed if item content is used.
The specified items can be renamed.
The specified items can be deleted.
The specified items have property sheets.
The specified items are drop targets.
Windows 7 and later. The specified items are system
The specified items are encrypted and might require
Accessing the item (through IStream or other storage
interfaces) is expected to be a slow operation.
The specified items are shown as dimmed and
unavailable to the user.
The specified items are shortcuts.
The specified objects are shared.
The specified items are read-only. In the case of
folders, this means that new items cannot be created in those folders. This
should not be confused with the behavior specified by the file attribute
The item is hidden and should not be displayed
unless the Show hidden files and folders option is enabled in Folder
The items are non-enumerated items and should be
Should not be changed.
The items contain new content, as defined by the
Indicates that the item has a stream associated with
Children of this item are accessible through IStream
or IStorage. Those children are flagged with SFGAO_STORAGE or SFGAO_STREAM.
When specified as input, SFGAO_VALIDATE instructs the
folder to validate that the items contained in a folder or Shell item array
The specified items are on removable media or are
themselves removable devices.
The specified items are compressed.
The specified items can be hosted inside a web browser
or Windows Explorer frame.
The specified folders are either file system folders
or contain at least one descendant (child, grandchild, or later) that is a
file system (SFGAO_FILESYSTEM) folder.
Already handled for physical ShellFolders instances
The specified items are folders.
The specified folders or files are part of the file
system (that is, they are files, directories, or root directories).
Already handled for physical ShellFolders and
True (physical) or
The specified folders have subfolders.
Already handled, but can be changed if needed (when
we are sure the folder contains nothing).