Hola a todos:

Pues llevo un tiempo metido en un proyecto en mi empresa y entre muchas otras cosas me vi en la necesidad de extraer datos sobre los equipos de la empresa.  Y si, ya sé que para eso existen muchos programas por ahí, pero necesitaba agregarle estas características al proyecto en el que estoy trabajando. Y bueno de ahí la pregunta de ¿Cómo obtengo las características del hardware de una pc? Y di con las clases WMI(en español, Instrumental de administración de Windows). Resulta que el WMI es un repositorio de información que les hace la vida más fácil a programadores como nosotros que necesitamos encontrar información del sistema (Hardware, Software, Sistema Operativo) y es algo bastante viejo ya, desde Windows 2000 (ahora fue que lo vi J). Pero bueno veamos cómo funciona esto.

Primero debemos agregar la referencia a System.Management para poder usar este repositorio de clases, donde cada una tiene diferentes propiedades. Así que si queremos obtener por ejemplo los discos duros que tiene la pc llamaríamos a la clase que recopila esta información y a las características que nos interesen. Así

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");

int count = 1;

foreach (var hdd in searcher.Get())

{

try

{

if (hdd["InterfaceType"].ToString() != "USB")

{

Variable  += count + "- Modelo: " + hdd["Model"] + "  ";

count++;

}

}

catch

{

// ignored

}

}

En este ejemplo llamo a la clase “Win32_DiskDrive” de WMI mediante un objeto buscador de tipo

“ManagementObjectSearcher” y le paso la consulta. Luego con un ciclo foreach recorro la consulta que el devuelve y mediante un contador voy enumerando los discos. Vean que solo capturo los discos que no estén conectados por usb y que las propiedades que estoy llamando son [“InterfaceType”] y [“Model”].

Muy fácil ¿verdad?  No tanto. Porque existen muchas clases y cada una con sus propiedades y ahí es donde se complica, si no sabemos cuál nos va a dar lo que estamos buscando.

Por suerte para eso existe un generador de código para esto. Incluso te lo lleva a c# o vb.

Pueden descargarlo aquí y también en codeproject.

Espero que les sea de ayuda. Cualquier duda pueden preguntar en los comentarios.

Saludos.