Managed applications compiled with compiler option /platform:anycpu (MSIL only applications) will be executed as 64 bit native processes.

The decision is made by the OS. There isn't anything you can do to override this (except by modifying the images using corflags ).

In order to run those applications as 32 bit process, you have to load them as assemblies, instead of launching them as processes.

For example, you can write a 32 bit only application, and its sole purpose is to call ExecuteAssembly on a given assembly.