在C#中,如何以编程方式了解操作系统是x64还是x86

在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; } } 

提前致谢。

在.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); } } 

使用reflection器或类似物品来确切了解其工作原理。

bool x86 = IntPtr.Size == 4;

如果您针对AnyCPU构建,并且您在64位系统上运行,它将在64位版本的框架上运行。 在32位系统上,它将在32位版本的框架上运行。 只需检查IntPtr.Size属性,就可以使用它。 如果Size = 4,则运行在32位, Size = 8,您运行的是64位。

看看这个:

http://msdn.microsoft.com/en-us/library/system.environment_members.aspx

我认为您正在寻找System.Environment.OSVersion

以下是这个答案 ,所以不要为它投票:)

 if (8 == IntPtr.Size || (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")))) { // x64 } else { // x86 }