2010-08-25 58 views
0

我需要得到OsArchitecture指的O/s位獲得操作系統的細節,我使用Win32_OperatingSystem但其「OsArchitecture」未對所有類型的操作系統如何在C#代碼

ManagementObjectSearcher objOSDetails = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); 
      ManagementObjectCollection osDetailsCollection = objOSDetails.Get(); 
foreach(ManagementObject mo in osDetailsCollection) 
    { 
    String _operatingSysBits = mo["OSArchitecture"].ToString(); 

    } 
+1

的可能重複[如何檢測的Windows 64位平臺和.NET?](http://stackoverflow.com/questions/336633/how-to-detect-windows-64-bit-platform-with-net) – Powerlord 2010-08-25 17:46:10

回答

1

檢查IntPtr.Size工作。它將在32位平臺上爲4,在64位平臺上爲8(除非您的進程在32位模式下運行)。

+2

在64位平臺上運行爲32位編譯的.NET應用程序,它仍然是4。 – Powerlord 2010-08-25 17:46:45

+0

如果在Windows 64上作爲32位進程運行,則不會。 – driis 2010-08-25 17:47:23

+0

什麼是IntPtr.Size以及從何處獲取它。 – 2010-08-25 17:50:18

0

用於.NET 4.0有Environment.is64BitOperatingSystem

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();