在C#中,如何以编程方式了解操作系统是x64还是x86
我在互联网上找到了这种API方法,但它不起作用
[DllImport("kernel32.dll")]
public static extern bool IsWow64Process(System.IntPtr hProcess, out bool lpSystemInfo);
public static bool IsWow64Process1
{
get
{
bool retVal = false;
IsWow64Process(System.Diagnostics.Process.GetCurrentProcess().Handle, out retVal);
return retVal;
}
}
提前致谢。
答案 0 :(得分:8)
在.NET 4.0中,您可以使用新的Environment.Is64BitOperatingSystem属性。
这就是它的实施方式
public static bool Is64BitOperatingSystem
{
[SecuritySafeCritical]
get
{
bool flag;
return ((Win32Native.DoesWin32MethodExist("kernel32.dll", "IsWow64Process") && Win32Native.IsWow64Process(Win32Native.GetCurrentProcess(), out flag)) && flag);
}
}
使用反射器或类似工具来确切了解其工作原理。
答案 1 :(得分:2)
bool x86 = IntPtr.Size == 4;
答案 2 :(得分:1)
如果您针对AnyCPU构建,并且您在64位系统上运行,它将在64位版本的框架上运行。在32位系统上,它将在32位版本的框架上运行。只需检查IntPtr.Size
属性即可使用此功能。如果Size
= 4,您运行的是32位,Size
= 8,那么您运行的是64位。
答案 3 :(得分:0)
看看这个:
http://msdn.microsoft.com/en-us/library/system.environment_members.aspx
我认为您正在寻找System.Environment.OSVersion
答案 4 :(得分:0)
以下内容来自this answer,所以不要赞成我:)
if (8 == IntPtr.Size
|| (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
{
// x64
}
else
{
// x86
}