How do I force my application to run as 32-bit on a 64-bit machine?
The code is written in C#.
Right click your project, and select properties.
In properties, select the build tab. Under platform target, select x86.
Hit Ctrl+Shift+S to save all files, right click the solution and select "Clean" to get rid of old binaries. Any builds after that should be 32 bit
Here's how I did it when we couldn't change the existing code from Any CPU to x86 due to a ClickOnce limitation:
Create a 32-bit (x86 must be checked under project properties) 'launcher' application (Windows Application but not form):
static void Main(string[] args)
{
// Load the assembly
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyName = Path.Combine(directory, "YourAnyCPUApplication.exe");
Assembly assembly = Assembly.LoadFile(assemblyName);
assembly.EntryPoint.Invoke(null, null);
}
Add the following code to the Main method in the Any CPU project:
if (IntPtr.Size == 4)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// etc...
}
else
{
// Launch application in 32-bit mode
System.Diagnostics.Process.Start(Path.GetDirectoryName(Application.ExecutablePath)
+ @"\Your32BitApplicationLauncher.exe");
}
I hope this helps :-)
If you go to Configuration Manager in Visual Studio you can set the platform to x86 or x64.
Assuming this is a Winforms, console app, or Windows service you have to build the exe for x86 instead of Any CPU. It's in the Configuration Manager.
Setting the project to x86 will prevent the file from executing on non-x86 platforms such as ARM. Since Visual Studio 11 and .NET framwork 4.5 there's a new option named Any CPU 32-bit preferred
and this was the default since then. The resulting code will run on any platforms but on 64-bit platforms they are run as 32-bit processes