简体   繁体   中英

Running a C# application as 32-bit on a 64-bit machine

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

命令行形式:

corflags application.exe /32BIT+ 

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

如果您转到 Visual Studio 中的配置管理器,您可以将平台设置为 x86 或 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

Further reading

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM