To write a ShellBoost shell namespace extension, you’ll
first need to download ShellBoost binaries. Follow these steps:
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
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 sample project.
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).
Display Name: it’s the name that the Windows Shell uses
when it displays the extension.
Tooltip: the 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
Icons: the set of icons that’s used to display your
extension in the Windows Shell.
Attributes: this 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 class.
ShellBoost Shell Item equivalent
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 object.
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 items.
The specified items are encrypted and might require special
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 Read-Only flag.
The item is hidden and should not be displayed unless the Show hidden
files and folders option is enabled in Folder Settings.
The items are non-enumerated items and should be hidden.
Should not be changed.
The items contain new content, as defined by the particular
Indicates that the item has a stream associated with it.
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 exist.
The specified items are on removable media or are themselves
The specified items are compressed.
The specified items can be hosted inside a web browser or Windows
The specified folders are either file system folders or contain at
least one descendant (child, grandchild, or later) that is a file system
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 ShellItems instances
True (physical) or False (virtual)
The specified folders have subfolders.
Already handled, but can be changed if needed (when we are sure the
folder contains nothing).