FAQ: How do I retrieve hardware device information on a machine via WMI?

Locked FAQ: How do I retrieve hardware device information on a machine via WMI?

Locked

  • Friday, April 10, 2009 2:31 PM
     
      Has Code

    How do I retrieve hardware device information on a machine via WMI?


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.

All Replies

  • Friday, April 10, 2009 2:34 PM
     
     Answered

    First, Add Reference System.Management.dll to your project and import system.Management namespace.

    Code sample: Retrieve device info from hard disk, motherboard and CPU.

    Prerequisites: Drag&drop Button1, Button2, Button3 and ListBox1 onto Form1.

     

    Imports System.Management
    Public Class Form1
        'Retrieve HardDisk information
        Private Sub Button1_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles Button1.Click
            ' Get the hardware Model anf Type info
            Dim searcher As ManagementObjectSearcher = _
                            New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
            For Each wmi_HD As ManagementObject In searcher.Get()
                ListBox1.Items.Add("Model:" & vbTab & wmi_HD("Model").ToString())
                ListBox1.Items.Add("Type:" & vbTab & wmi_HD("InterfaceType").ToString())
            Next wmi_HD
    
            ' Get the hardware SerialNumber info
            searcher = New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
            For Each wmi_HD As ManagementObject In searcher.Get()
                If wmi_HD("SerialNumber") Is Nothing Then
                    ListBox1.Items.Add("Serial No:" & vbTab & "None")
                Else
                    ListBox1.Items.Add("Serial No:" & vbTab & wmi_HD("SerialNumber").ToString())
                End If
            Next wmi_HD
        End Sub
    
        'Retrieve MortherBoard information
        Private Sub Button2_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles Button2.Click
            Dim searcher As ManagementObjectSearcher = _
                            New ManagementObjectSearcher("select * from Win32_BaseBoard")
            For Each oReturn As ManagementObject In searcher.Get()
                ListBox1.Items.Add( _
                 "MortherBoard Serial No." & Constants.vbTab & ": " & oReturn("SerialNumber").ToString)
            Next oReturn
        End Sub
    
        'Retrieve CPU information
        Private Sub Button3_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) Handles Button3.Click
            Dim searcher As ManagementObjectSearcher = _
                            New ManagementObjectSearcher("select * from Win32_Processor")
            For Each oReturn As ManagementObject In searcher.Get()
                ListBox1.Items.Add("CPU ID" & Constants.vbTab & ": " & oReturn("ProcessorId").ToString)
            Next oReturn
        End Sub
    End Class
    
    



    Additionally, the WMI Code Creator tool is helpful.

    http://www.microsoft.com/downloads/details.aspx?familyid=2CC30A64-EA15-4661-8DA4-55BBC145C30E&displaylang=en  

     

    The WMI Code Creator tool allows you to generate VBScript, C#, and VB .NET code that uses WMI to complete a management task such as querying for management data, executing a method from a WMI class, or receiving event notifications using WMI.

     

    Related threads:

    http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/f393708f-d7e3-4aa3-a624-7e8c6662f343/

    http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/8724deae-d9d9-4cd9-829b-ef4eefcb4617/

     

    For more FAQ about Visual Basic .NET General, please see Visual Basic .NET General FAQ

     


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.