Intel 32 and 64-bit support

Thanks to its out-of-process architecture, ShellBoost supports all 32-bit and 64-bit Intel deployment scenarios

in 32-bit (x86) Windows;

in 64-bit (x64) Windows, for 64 and 32-bit clients (running on WOW https://en.wikipedia.org/wiki/Windows_on_Windows) simultaneously;

The Shell Folder Server, the .NET application that you write when you use ShellBoost, can itself run in 32-bit or in 64-bit. This “server” can be hosted in two different ways:

As a .NET .exe. This is the easiest and preferred method and the one that is demonstrated in most ShellBoost Samples. In this case, we recommend you compile this .exe as “Any Cpu” which will allow you, without any extra effort, to deploy your namespace extension in pure 32-bit Windows OS and in 64-bit Windows OS machine.

As a .NET .dll. In this case, the .dll should also be compiled as “Any Cpu” so it will adapt to its host program bitness.

In the latter case, how your Shell Folder Server .NET .dll should be hosted is an architectural choice that ultimately depends on your context. You can host it in another .NET application written using any .NET language you want, or in an application written in any other language and tool (C/C++, Delphi, etc.), provided this environment can run or host a .NET assembly by any mean. Here are some possibilities for hosting a managed .NET .dll in a native program:

COM, an obvious choice since it’s fully supported by native code and .NET

Native CLR Hosting: https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/hosting/clr-hosting-interfaces

DllExport for .NET assemblies: https://github.com/3F/DllExport

Registration

Whatever scenario you choose, if you want to support simultaneously 32 and 64-bit applications on a 64-bit OS, you will have to register your extension in both 32 and 64 worlds. The following schema explains how that can work:

Registration - Picture 90

Note: The ShellBoost registration utility class do not currently register in both 32 and 64-bit registries so you will have to call for example regsvr32.exe (as explained in the following Deployment chapter) to register for 32-bit registry from a 64-bit executable, and vice versa.