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:

 

ShellBoost binaries setup - Picture 35

 

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.

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:

Project Characteristics - Picture 34

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