以非语言环境敏感的方式确定Windows操作系统体系结构

时间:2010-07-28 20:25:52

标签: c# windows architecture x86-64

我正在寻找一种可靠的方法来确定Windows操作系统体系结构(32位或64位),其方式对Windows版本或系统区域设置/显示语言不敏感。我将使用C#来做到这一点。为了澄清,我需要OS架构,而不是处理器架构,而不是应用程序架构。

我知道我可以使用IntPtr.Size,但这取决于应用程序的目标架构。

我也尝试使用System.Management.ManagementClass从Win32_OperatingSystem获取“OSArchitecture”属性。但是,其值会根据显示语言而改变。 (例如,如果我将显示语言设置为西班牙语,我会得到“64位”,而在英语中则是“64位”。)

谢谢!

4 个答案:

答案 0 :(得分:1)

以下是对How to detect Windows 64 bit platform with .net?

的回答

基本上,您可以通过首先检查进程的类型然后调用正确的方法来执行正确的检查来完成此操作。

答案 1 :(得分:1)

安装Windows体系结构:

    string getOSArchitecture()
    {
        if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)))
            return "64-bit";
        return "32-bit";
    }

答案 2 :(得分:1)

在.NET 4.0或更高版本上,有一个System.Environment.Is64bitOperatingSystem属性。

答案 3 :(得分:0)

对于其他任何有同样问题的人来说,这似乎也可以解决问题。我不确定它有多强大:



public bool Is64Bit() {
    return (System.Environment.GetEnvironmentVariable("ProgramFiles(x86)") != null);
}