2011-08-04 13 views
8

Quiero comprobar qué tipo de sistema operativo uso y qué tipo de procesador. esto debería ser verificar el tiempo de ejecución. He intentado utilizarDetermine el sistema operativo y el tipo de procesador en C#

System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") 

y

System.OperatingSystem osInfo2 = System.Environment.OSVersion; 
Console.WriteLine(osInfo2.ToString()); 

pero es sólo el medio ambiente que VS se está ejecutando.
Me dijeron que use WMI para comprobarlo, pero no puedo averiguar cómo. alguien me puede ayudar con eso?

Respuesta

5

Sí WMI es la mejor manera de hacer este tipo de cosas Usted puede usar esto para recuperar información del sistema operativo:

ManagementObjectSearcher objMOS = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem"); 
23

Recuperación del sistema operativo info:

var wmi = 
    new ManagementObjectSearcher("select * from Win32_OperatingSystem") 
    .Get() 
    .Cast<ManagementObject>() 
    .First(); 

OS.Name = ((string)wmi["Caption"]).Trim(); 
OS.Version = (string)wmi["Version"]; 
OS.MaxProcessCount = (uint)wmi["MaxNumberOfProcesses"]; 
OS.MaxProcessRAM = (ulong)wmi["MaxProcessMemorySize"]; 
OS.Architecture = (string)wmi["OSArchitecture"]; 
OS.SerialNumber = (string)wmi["SerialNumber"]; 
OS.Build = ((string)wmi["BuildNumber"]).ToUint(); 

Recuperación de Información de la CPU:

var cpu = 
    new ManagementObjectSearcher("select * from Win32_Processor") 
    .Get() 
    .Cast<ManagementObject>() 
    .First(); 

CPU.ID = (string)cpu["ProcessorId"]; 
CPU.Socket = (string)cpu["SocketDesignation"]; 
CPU.Name = (string)cpu["Name"]; 
CPU.Description = (string)cpu["Caption"]; 
CPU.AddressWidth = (ushort)cpu["AddressWidth"]; 
CPU.DataWidth = (ushort)cpu["DataWidth"]; 
CPU.Architecture = (CPU.CpuArchitecture)(ushort)cpu["Architecture"]; 
CPU.SpeedMHz = (uint)cpu["MaxClockSpeed"]; 
CPU.BusSpeedMHz = (uint)cpu["ExtClock"]; 
CPU.L2Cache = (uint)cpu["L2CacheSize"] * (ulong)1024; 
CPU.L3Cache = (uint)cpu["L3CacheSize"] * (ulong)1024; 
CPU.Cores = (uint)cpu["NumberOfCores"]; 
CPU.Threads = (uint)cpu["NumberOfLogicalProcessors"]; 

CPU.Name = 
    CPU.Name 
    .Replace("(TM)", "™") 
    .Replace("(tm)", "™") 
    .Replace("(R)", "®") 
    .Replace("(r)", "®") 
    .Replace("(C)", "©") 
    .Replace("(c)", "©") 
    .Replace(" ", " ") 
    .Replace(" ", " "); 
2

para determinar el uso del sistema operativo este código:

string OPSystemVersion = Environment.OSVersion.ToString(); 

para determinar el nombre de la CPU y escriba primero añada referencia System.Management a su proyecto, a continuación, puede utilizar esta código:

public static string SendBackProcessorName() 
     { 
      ManagementObjectSearcher mosProcessor = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"); 
      string Procname = null; 

      foreach (ManagementObject moProcessor in mosProcessor.Get()) 
      { 
       if (moProcessor["name"] != null) 
       { 
        Procname = moProcessor["name"].ToString(); 

       } 

      } 

      return Procname; 
     } 
+0

Lista de números de versión y la versión de Windows que corresponden a se puede encontrar [aquí] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832 (v = vs.85) .aspx). Windows 7: 6.1, Windows 8: 6.2, Windows 8.1: 6.3, Windows 10: 10.0 – Adam

Cuestiones relacionadas