32或64位机器

时间:2011-11-11 13:34:25

标签: c# bit

  

可能重复:
  How to detect Windows 64 bit platform with .net?

我正在使用此代码检查机器是64位还是32位:

    public static string GetOSBit()
    {
        bool is64bit = Is64Bit();
        if (is64bit)
            return "64 bit";
        else
            return "32 bit";
    }

    [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo);

    public static bool Is64Bit()
    {
        bool retVal;
        IsWow64Process(Process.GetCurrentProcess().Handle, out retVal);
        return retVal;
    }

我有一台32位机器,它对我来说还可以。它返回“32位”。我的朋友也有32位机器,但安装了64位的虚拟机。上面的代码为她的虚拟机返回“32位”,尽管它是64位。 我在C#,。Net 2.0工作。

2 个答案:

答案 0 :(得分:2)

函数IsWow64Process确定指定的进程是否在WOW64下运行。因此,当调用在64位操作系统下运行的32位进程时,它基本上会返回true

答案 1 :(得分:-1)

您可以使用Environment.Is64BitOperatingSystem

有关更多答案和讨论,请参阅this question


编辑:哦,没有看到关于.net 2.0的问题。 (保留答案供参考。)