正确的方法来检测CPU架构?

我正在尝试检测正确的cpu架构,以安装x86 msi或x64 msi文件。

如果我是对的,对于msi我需要os cpu架构

我不完全确定我的方式是否正确,因为我无法测试它。 你怎么看?

private static string GetOSArchitecture() { string arch = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); string archWOW = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"); if(archWOW != null && archWOW != "" && archWOW.Contains("64")) return "x64"; if(arch.Contains("86")) return "x86"; if (arch.Contains("64")) return "x64"; return ""; } 

您可以P / Invoke到GetNativeSystemInfo ,它将提供操作系统的CPU体系结构,即使是在64位操作系统上的32位进程内也是如此。

正确的方法是调用IsWow64Process 。 此API“需要Windows XP SP2,Windows Vista,Windows Server 2003 SP1或Windows Server 2008”。 这种方法更容易。

很简单,尝试执行64位应用程序。 如果它失败了,你就在32位平台上。

编辑添加,根据您尝试做的,如果您确保您的msi转轮应用程序是32位应用程序,然后使用斯图尔特的方法。