2010-08-25 3 views
0

je dois obtenir OsArchitecture signifie Bits de O/s, i utilisé Win32_OperatingSystem mais son "OsArchitecture" est fonctionne pas pour tous les types du système d'exploitationcomment obtenir le système d'exploitation Détails en C# Code

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

    } 
+1

double possible de [Comment détecter la plate-forme Windows 64 bits avec .net?] (Http://stackoverflow.com/questions/336633/comment-détecter-windows-64-bit-platform-with-net) – Powerlord

Répondre

1

Vérifier IntPtr.Size. Il sera 4 sur une plate-forme 32 bits et 8 sur une plate-forme 64 bits (à moins que votre processus ne fonctionne en mode 32 bits).

+2

Il sera toujours 4 sur une plate-forme 64 bits exécutant une application .NET compilée pour 32 bits. – Powerlord

+0

Pas si exécutant comme un processus 32 bits sur Windows 64. – driis

+0

ce qui est IntPtr.Size et où l'obtenir. –

0

pour .NET 4.0 il est Environment.is64BitOperatingSystem

ou

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