2011-06-08 24 views
9

Utilizo el siguiente código C# para obtener información del procesador. La clase de gestión es nula si ejecuto mi aplicación en una máquina virtual. Yo uso de Oracle VM VirtualBox como mi Virtual PC (Windows XP SP3)Identificación de CPU en la máquina virtual

System.Management.ManagementClass Management = new System.Management.ManagementClass("Win32_Processor"); 

¿Alguien tiene experiencia sobre el uso de dicho código y tiene problemas en las máquinas virtuales.

+0

eso no es posible, el operador * * nueva nunca se devuelve un valor nulo. Tu problema debe ser virtual también. –

+0

Sí Hans, tienes razón. La instancia de ManagementClass no es nula. La gestión ["ProcessorId"] es nula. – Demir

Respuesta

1

¿Está utilizando GetInstances?

 
System.Management.ManagementClass ManagementClass1 = new System.Management.ManagementClass("Win32_Processor"); 

System.Management.ManagementObjectCollection ManagementObjectCollection1 = ManagementClass1.GetInstances(); 

foreach (System.Management.ManagementObject managementobject in ManagementObjectCollection1) { 
    Console.Out.WriteLine(managementobject.Properties["Name"].Value); 
} 

Console.In.ReadLine(); 
+0

Sí @VSU, estoy usando el método GetInstances(). Parece que VirtualBox no es compatible con todos los procesos de WMI. – Demir

+0

Descargue BgInfo de Microsoft.com y vea si puede obtener la información de CPU correcta. Si no puede, VirtualBox lo esconde y no hay ningún error en su código. – BZ1

+0

También asegúrese de tener la versión más reciente de VBox y de instalar Guest Additions. He visto que VBox esconde algunos detalles. Esto no es inusual y probablemente sea por diseño. – BZ1

Cuestiones relacionadas