[Resuelto] Obtener datos de hardware usando clases WMI

Iniciado por Crazy.sx, 19 Diciembre 2012, 03:40 AM

0 Miembros y 1 Visitante están viendo este tema.

Crazy.sx

Estoy intentando usar WMI para sacar los datos de Numero de serie de CPU o ID y de la BIOS, pero no me funciona...
¿Alguie me puede ayudar?

Lo que hice es esto:

Código (vbnet) [Seleccionar]

Imports System
Imports System.Management
Imports System.Windows.Forms
Public Class Form1
   Private Sub Form1_Load( _
             ByVal sender As System.Object, _
             ByVal e As System.EventArgs) Handles MyBase.Load

       ' obtener numero de serie bios
       Dim consultaNumSerieBios As String = "SELECT * FROM Win32_BIOS"
       Dim objNumBios As New ManagementObjectSearcher(consultaNumSerieBios)
       For Each info As ManagementObject In objNumBios.Get()
           infoNumBIOS.Text = info.Properties("SerialNumber").ToString

       Next info
End Sub
End Class


¿Cuál es el error que estoy cometiendo?

Bueno, en este código solo intento obtener el número de serie de BIOS pero me faltaría el del CPU también, je.
Gracias.
Destruir K. LOL

Novlucker

¿Qué tipo de error te da?

Te sugiero ejecutar lo siguiente desde ms-dos, y luego comparar con la info obtenida desde tu método.
Código (dos) [Seleccionar]
wmic bios get /format:list

... en mi caso el SerialNumber dice "To Be Filled By O.E.M." :xD

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

TrashAmbishion

Cita de: Novlucker en 19 Diciembre 2012, 14:18 PM
¿Qué tipo de error te da?

Te sugiero ejecutar lo siguiente desde ms-dos, y luego comparar con la info obtenida desde tu método.
Código (dos) [Seleccionar]
wmic bios get /format:list

... en mi caso el SerialNumber dice "To Be Filled By O.E.M." :xD

Saludos

Jajajajajajajaja  ;-) ;-)

Típico

Es muy facil aprieta donde dice Autodestruir, bad joke, jumm

Crazy.sx

#3
Encontré la solución, y no solamente pude sacar la información del BIOS y del CPU sino de todo el hardware. Al final, es muy fácil usar WMI y hacer las consultas como se lo haría con SQL.

El código que revisé está en C# pero más abajo les dejo en VB.NET (disculpen, no me di cuenta de copiar la fuente y se me acabó el tiempo del ciber). Lo edité un poco, pero funciona perfectamente, no es muy complicado entenderlo  :):

Código (vbnet) [Seleccionar]
   Private Sub InfoHardware(ByVal clave As String)
       Dim searcher As New ManagementObjectSearcher("select * from " + clave)
       ListView1.Items.Clear()
       Dim listv As ListViewGroup
       Try
           For Each objeto As ManagementObject In searcher.[Get]()
               Try
                   listv = ListView1.Groups.Add(objeto("Name").ToString(), objeto("Name").ToString())
               Catch


                   listv = ListView1.Groups.Add(objeto("Name").ToString(), objeto("Name").ToString())
               End Try
               If objeto.Properties.Count <= 0 Then
                   MessageBox.Show("No hay información al respecto", "Atención")
                   Return
               End If

               For Each PropiedadObj As PropertyData In objeto.Properties
                   Dim listViewItem1 As New ListViewItem(listv)
                   listViewItem1.Text = PropiedadObj.Name

                   If PropiedadObj.Value IsNot Nothing AndAlso PropiedadObj.Value.ToString() <> "" Then
                       listViewItem1.SubItems.Add(PropiedadObj.Value.ToString())
                       ListView1.Items.Add(listViewItem1)
                   Else

                   End If
               Next
           Next
   End Sub


Solo es cuestión de enviar como parámetro cualquiera de las clases Win32 y listo. Aquí hay un listado completo de las clases Win32 con sus especifiaciones (en inglés). http://msdn.microsoft.com/en-us/library/aa394084(v=vs.85).aspx

Saludos.

Cita de: Novlucker en 19 Diciembre 2012, 14:18 PM
¿Qué tipo de error te da?

Te sugiero ejecutar lo siguiente desde ms-dos, y luego comparar con la info obtenida desde tu método.
Código (dos) [Seleccionar]
wmic bios get /format:list

... en mi caso el SerialNumber dice "To Be Filled By O.E.M." :xD

Saludos
Gracias Novlucker. Saludos.
Destruir K. LOL

spiritdead

Facilitador De Tareas - Task Simplifier (FDT)

Crazy.sx

Destruir K. LOL

spiritdead

sorry si no te dije, :P prefiero q aprendan a investigar, a veces algunos piden el job entero y uno queda >.>

:) prefiero aclarar dudas puntuales o errores puntuales :)

saludos
Facilitador De Tareas - Task Simplifier (FDT)

llFabianfll

Hola Amigo muchas gracias por el aporte esta muy bueno voy a revisar bn el codigo xq necesito crear una aplicacion que me facilite la recolección de los datos de unos equipos y poder almacenarlos en una BD SQL Server