【发布时间】:2011-11-11 13:34:24
【问题描述】:
我正在使用此代码来检查机器是 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 中工作。
【问题讨论】:
-
正如 API 所暗示的,这描述了一个过程,而不是机器