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

时间:2010-01-07 00:33:51

标签: c# x86 64-bit cpu-architecture

我正在尝试检测正确的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 "";
    }

3 个答案:

答案 0 :(得分:3)

你可以P / Invoke到GetNativeSystemInfo,这将给出操作系统的CPU架构,即使是在64位操作系统上的32位进程内也是如此。

答案 1 :(得分:0)

right方式是致电IsWow64Process。此API“需要Windows XP SP2,Windows Vista,Windows Server 2003 SP1或Windows Server 2008”。 This method更容易。

答案 2 :(得分:0)

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

根据您尝试做的事情编辑添加,如果您确定您的msi runner应用程序是32位应用程序,那么请使用Stuart的方法。