使用C#,如何获得我的机器是64位还是32位?

使用C#,我想创建一个方法来重新调整我的机器是64位还是32位。

有谁知道怎么做?

System.Environment.Is64BitOperatingSystem

System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") 

看到这个问题。

这里是:

如何使用.NET检测Windows 64位平台?

引用:

 bool is64BitProcess = (IntPtr.Size == 8); bool is64BitOperatingSystem = is64BitProcess || InternalCheckIsWow64(); [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool IsWow64Process( [In] IntPtr hProcess, [Out] out bool wow64Process ); public static bool InternalCheckIsWow64() { if ((Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor >= 1) || Environment.OSVersion.Version.Major >= 6) { using (Process p = Process.GetCurrentProcess()) { bool retVal; if (!IsWow64Process(p.Handle, out retVal)) { return false; } return retVal; } } else { return false; } } 

我为我的一个项目(C#VS 2005)编了代码。

 //DLL Imports using System.Runtime.InteropServices; ///  /// The function determines whether the current operating system is a /// 64-bit operating system. ///  ///  /// The function returns true if the operating system is 64-bit; /// otherwise, it returns false. ///  public static bool Is64BitOperatingSystem() { if (IntPtr.Size == 8) // 64-bit programs run only on Win64 { return true; } else // 32-bit programs run on both 32-bit and 64-bit Windows { // Detect whether the current process is a 32-bit process // running on a 64-bit system. bool flag; return ((DoesWin32MethodExist("kernel32.dll", "IsWow64Process") && IsWow64Process(GetCurrentProcess(), out flag)) && flag); } } ///  /// The function determins whether a method exists in the export /// table of a certain module. ///  /// The name of the module /// The name of the method ///  /// The function returns true if the method specified by methodName /// exists in the export table of the module specified by moduleName. ///  static bool DoesWin32MethodExist(string moduleName, string methodName) { IntPtr moduleHandle = GetModuleHandle(moduleName); if (moduleHandle == IntPtr.Zero) { return false; } return (GetProcAddress(moduleHandle, methodName) != IntPtr.Zero); } [DllImport("kernel32.dll")] static extern IntPtr GetCurrentProcess(); [DllImport("kernel32.dll", CharSet = CharSet.Auto)] static extern IntPtr GetModuleHandle(string moduleName); [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)] static extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)]string procName); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool IsWow64Process(IntPtr hProcess, out bool wow64Process); 
  public static string t2or64() { string t2s4; bool os = System.Environment.Is64BitOperatingSystem; int x = 0; if (os == true) { x = 64; } else { x = 32; } t2s4 = Convert.ToString(x); return t2s4; } 

您可以使用IntPtr大小进行检查。 对于32位OS,IntPtr大小为4,对于64位OS,IntPtr大小为8

 /// Is64s the bit operating system. ///  if (IntPtr.Size == 8) // 64Bit else // 32bit 

键入:System.Int32

此过程中指针或句柄的大小,以字节为单位。 此属性的值在32位进程中4, 在64位进程中为8 。 您可以在使用C#Visual Basic编译器编译代码时通过设置/platform开关来定义进程类型。