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