- Introduction
- Developer’s Guide
- Samples
- Reference
ShellBoost binaries setup
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 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 sample project. NOTE: the download can take quite a time (even minutes) to complete as the server prepares the binaries corresponding to your project, so please be patient.
If you’re not looking for advanced configuration, this is all you need to get started.
Unless you need a ShellBoost update, if you haven’t changed the project characteristics in any way, you won’t need to download the project files again.
Updates
The list of ShellBoost available updates for a given project is displayed in the drop-down list on top of the project page. The content of the list depends on the project license (trial vs commercial, etc.).
Project characteristics
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. These changes are 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:
unregister the existing native binaries using ShellBoost API or any external COM registration too. See the Deployment chapter for that.
download the project binary files again,
replace these binary files in your project(s). You may have to stop applications that are using your old binaries (Explorer, 3rd parties, etc.). See the Troubleshooting chapter for that.
register again,
run your project.
Description of characteristics:
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.
Namespace Location: describes where your Shell Namespace Extension will be located in the Shell namespace.
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.
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
Attributes detailed
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.
MSDN name |
MSDN description |
ShellBoost Comment |
ShellBoost Shell Item equivalent Property |
Item Default Value |
Folder Default Value |
SFGAO_CANCOPY |
The specified items can be copied. |
|
CanCopy |
False |
False |
SFGAO_CANMOVE |
The specified items can be moved. |
|
CanMove |
False |
False |
SFGAO_CANLINK |
Shortcuts can be created for the specified items. |
|
CanLink |
True |
True |
SFGAO_STORAGE |
The specified items can be bound to an IStorage object. |
Should not be changed if item content is used. |
|
True |
True |
SFGAO_CANRENAME |
The specified items can be renamed. |
|
CanRename |
False |
False |
SFGAO_CANDELETE |
The specified items can be deleted. |
|
CanDelete |
False |
False |
SFGAO_HASPROPSHEET |
The specified items have property sheets. |
|
HasPropertySheet |
True |
True |
SFGAO_DROPTARGET |
The specified items are drop targets. |
|
IsDropTarget |
False |
False |
SFGAO_SYSTEM |
Windows 7 and later. The specified items are system items. |
|
|
False |
False |
SFGAO_ENCRYPTED |
The specified items are encrypted and might require special presentation. |
|
|
False |
False |
SFGAO_ISSLOW |
Accessing the item (through IStream or other storage interfaces) is expected to be a slow operation. |
|
|
False |
False |
SFGAO_GHOSTED |
The specified items are shown as dimmed and unavailable to the user. |
|
|
False |
False |
SFGAO_LINK |
The specified items are shortcuts. |
|
|
False |
False |
SFGAO_SHARE |
The specified objects are shared. |
|
|
False |
False |
SFGAO_READONLY |
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. |
|
|
False |
False |
SFGAO_HIDDEN |
The item is hidden and should not be displayed unless the Show hidden files and folders option is enabled in Folder Settings. |
|
IsHidden |
False |
False |
SFGAO_NONENUMERATED |
The items are non-enumerated items and should be hidden. |
Should not be changed. |
|
False |
False |
SFGAO_NEWCONTENT |
The items contain new content, as defined by the particular application. |
|
|
False |
False |
SFGAO_STREAM |
Indicates that the item has a stream associated with it. |
Should not be changed if item content is used. |
|
True |
True |
SFGAO_STORAGEANCESTOR |
Children of this item are accessible through IStream or IStorage. Those children are flagged with SFGAO_STORAGE or SFGAO_STREAM. |
Should not be changed if item content is used. |
|
False |
True |
SFGAO_VALIDATE |
When specified as input, SFGAO_VALIDATE instructs the folder to validate that the items contained in a folder or Shell item array exist. |
Should not be changed. |
|
False |
False |
SFGAO_REMOVABLE |
The specified items are on removable media or are themselves removable devices. |
|
|
False |
False |
SFGAO_COMPRESSED |
The specified items are compressed. |
|
|
False |
False |
SFGAO_BROWSABLE |
The specified items can be hosted inside a web browser or Windows Explorer frame. |
|
|
False |
True |
SFGAO_FILESYSANCESTOR |
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 |
|
False |
False |
SFGAO_FOLDER |
The specified items are folders. |
Should not be changed. |
|
False |
True |
SFGAO_FILESYSTEM |
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) |
True (physical) or False (virtual) |
SFGAO_HASSUBFOLDER |
The specified folders have subfolders. |
Already handled, but can be changed if needed (when we are sure the folder contains nothing). |
|
False |
True |