代码之家  ›  专栏  ›  技术社区  ›  Shantanu Gupta

如何以C代码获取操作系统详细信息

  •  0
  • Shantanu Gupta  · 技术社区  · 14 年前

    我需要得到OSarchitecture意味着一些O/S,我使用了win32操作系统,但它的“OSarchitecture”并不适用于所有类型的操作系统。

    ManagementObjectSearcher objOSDetails = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
               ManagementObjectCollection osDetailsCollection = objOSDetails.Get();
     foreach( ManagementObject mo in osDetailsCollection )
      {
        String  _operatingSysBits = mo["OSArchitecture"].ToString();
    
      }
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Bob    14 年前

    检查 IntPtr.Size . 它将在32位平台上为4,在64位平台上为8(除非进程在32位模式下运行)。

        2
  •  0
  •   nilphilus    14 年前

    对于.NET 4.0,有environment.is64位操作系统

        ManagementObject Mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'");
        object o = Mo["Architecture"];
        UInt16 sp = (UInt16)(o);
    
        if (sp == 0)
        {
            //86
        } else if (sp == 9)
        {
            //64
        }
    
        Mo.Dispose();