Author:水如烟
WMI的查询在日常计算机和网络管理中经常会用到。本项目的目的是使WMI查询变得简单一些。
功能:以给出的身份查询某台机的WMI提供的信息
使用方式(示):示图
    Private Sub Start()
        ListBoxItemAdd(String.Format("Begin AT {0}", Now.ToString))
        ListBoxItemAdd("")
        LzmTW.WMI.SimpleQuery.ServerName = Me.TextBoxServerName.Text
        LzmTW.WMI.SimpleQuery.UserName = Me.TextBoxUserName.Text '为空时以当前身份查询
        LzmTW.WMI.SimpleQuery.Password = Me.TextBoxPassword.Text
        LzmTW.WMI.SimpleQuery.EnumerateDeep = Me.CheckBoxEnumerateDeep.Checked
        Try
            LzmTW.WMI.SimpleQuery.Excute(Me.ComboBoxSelect.Text)
        Catch ex As Exception
            ListBoxItemAdd(String.Format("Error! Msg:{0}", ex.Message))
        End Try
        ListBoxItemAdd("")
        ListBoxItemAdd(String.Format("End AT {0}", Now.ToString))
    End Sub
其中接受查询内容的Me.ComboBoxSelect.Tex文本可以是这样的:
Win32_Desktop
或
\\.\root\cimv2:Win32_Desktop.Name="NT AUTHORITY\\LOCAL SERVICE"
或
Win32_Desktop.Name="NT AUTHORITY\\LOCAL SERVICE"
或
SELECT NAME FROM Win32_Desktop
以下为主项目:
项目引用System.Management命名,共有五个文件,在命名空间LzmTW之内,生成LzmTW.WMI.Dll文件。
五个文件分别是:QueryInfo.vb,Query.vb,Delegate.vb,SimpleQuery.vb,WMIClass.vb。
QueryInfo.vb
 Namespace WMI
Namespace WMI
 Public Class QueryInfo
    Public Class QueryInfo Public ServerName As String = "."
        Public ServerName As String = "." Public NamespacePath As String = "root\cimv2"
        Public NamespacePath As String = "root\cimv2" Public RelativePath As String
        Public RelativePath As String Public UserName As String
        Public UserName As String Public Password As String
        Public Password As String End Class
    End Class
 End Namespace
End Namespace
Query.vb
 Namespace WMI
Namespace WMI Public Class Query
    Public Class Query Private Sub New()
        Private Sub New() End Sub
        End Sub
 Private Shared gQueryInfo As New QueryInfo
        Private Shared gQueryInfo As New QueryInfo
 Private Shared gManagementPath As System.Management.ManagementPath
        Private Shared gManagementPath As System.Management.ManagementPath Private Shared gConnectionOptions As System.Management.ConnectionOptions
        Private Shared gConnectionOptions As System.Management.ConnectionOptions Private Shared gManagementScope As System.Management.ManagementScope
        Private Shared gManagementScope As System.Management.ManagementScope
 Private Shared gObjectGetOptions As System.Management.ObjectGetOptions
        Private Shared gObjectGetOptions As System.Management.ObjectGetOptions Private Shared gEnumerationOptions As System.Management.EnumerationOptions
        Private Shared gEnumerationOptions As System.Management.EnumerationOptions
 Public Shared ReadOnly Property QueryInfo() As QueryInfo
        Public Shared ReadOnly Property QueryInfo() As QueryInfo Get
            Get Return gQueryInfo
                Return gQueryInfo End Get
            End Get End Property
        End Property
 <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
        <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _ Public Shared ReadOnly Property ManagementPath() As System.Management.ManagementPath
        Public Shared ReadOnly Property ManagementPath() As System.Management.ManagementPath Get
            Get Return gManagementPath
                Return gManagementPath End Get
            End Get End Property
        End Property
 <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
        <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _ Public Shared ReadOnly Property ConnectionOptions() As System.Management.ConnectionOptions
        Public Shared ReadOnly Property ConnectionOptions() As System.Management.ConnectionOptions Get
            Get Return gConnectionOptions
                Return gConnectionOptions End Get
            End Get End Property
        End Property
 <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
        <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _ Public Shared ReadOnly Property ObjectGetOptions() As System.Management.ObjectGetOptions
        Public Shared ReadOnly Property ObjectGetOptions() As System.Management.ObjectGetOptions Get
            Get Return gObjectGetOptions
                Return gObjectGetOptions End Get
            End Get End Property
        End Property
 <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
        <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _ Public Shared ReadOnly Property EnumerationOptions() As System.Management.EnumerationOptions
        Public Shared ReadOnly Property EnumerationOptions() As System.Management.EnumerationOptions Get
            Get Return gEnumerationOptions
                Return gEnumerationOptions End Get
            End Get End Property
        End Property
 Shared Sub New()
        Shared Sub New() gManagementPath = New System.Management.ManagementPath
            gManagementPath = New System.Management.ManagementPath gConnectionOptions = New System.Management.ConnectionOptions
            gConnectionOptions = New System.Management.ConnectionOptions gObjectGetOptions = New System.Management.ObjectGetOptions
            gObjectGetOptions = New System.Management.ObjectGetOptions gEnumerationOptions = New System.Management.EnumerationOptions
            gEnumerationOptions = New System.Management.EnumerationOptions End Sub
        End Sub
 Private Shared Sub Connect()
        Private Shared Sub Connect() With gManagementPath
            With gManagementPath .Server = gQueryInfo.ServerName
                .Server = gQueryInfo.ServerName .NamespacePath = gQueryInfo.NamespacePath
                .NamespacePath = gQueryInfo.NamespacePath .RelativePath = gQueryInfo.RelativePath
                .RelativePath = gQueryInfo.RelativePath End With
            End With
 If gQueryInfo.UserName IsNot Nothing Then
            If gQueryInfo.UserName IsNot Nothing Then gQueryInfo.UserName = gQueryInfo.UserName.Trim
                gQueryInfo.UserName = gQueryInfo.UserName.Trim If gQueryInfo.UserName = "" Then
                If gQueryInfo.UserName = "" Then QueryInfo.UserName = Nothing
                    QueryInfo.UserName = Nothing QueryInfo.Password = Nothing
                    QueryInfo.Password = Nothing End If
                End If Else
            Else gQueryInfo.Password = Nothing
                gQueryInfo.Password = Nothing End If
            End If
 With gConnectionOptions
            With gConnectionOptions .Username = gQueryInfo.UserName
                .Username = gQueryInfo.UserName .Password = gQueryInfo.Password
                .Password = gQueryInfo.Password End With
            End With

 If gManagementScope IsNot Nothing Then gManagementScope = Nothing
            If gManagementScope IsNot Nothing Then gManagementScope = Nothing gManagementScope = New System.Management.ManagementScope(gManagementPath, gConnectionOptions)
            gManagementScope = New System.Management.ManagementScope(gManagementPath, gConnectionOptions) gManagementScope.Connect()
            gManagementScope.Connect() End Sub
        End Sub
 Private Shared Function Excute0() As System.Management.ManagementObjectCollection
        Private Shared Function Excute0() As System.Management.ManagementObjectCollection Connect()
            Connect() Return (New System.Management.ManagementClass(gManagementScope, gManagementPath, gObjectGetOptions)).GetInstances
            Return (New System.Management.ManagementClass(gManagementScope, gManagementPath, gObjectGetOptions)).GetInstances End Function
        End Function
 Private Shared Function Excute1(ByVal query As String) As System.Management.ManagementObjectCollection
        Private Shared Function Excute1(ByVal query As String) As System.Management.ManagementObjectCollection Connect()
            Connect() Return (New System.Management.ManagementObjectSearcher(gManagementScope, New System.Management.ObjectQuery(query), gEnumerationOptions)).Get
            Return (New System.Management.ManagementObjectSearcher(gManagementScope, New System.Management.ObjectQuery(query), gEnumerationOptions)).Get End Function
        End Function
 Public Shared Function GetManagementObject(ByVal relativepath As String) As System.Management.ManagementObject
        Public Shared Function GetManagementObject(ByVal relativepath As String) As System.Management.ManagementObject QueryInfo.RelativePath = relativepath
            QueryInfo.RelativePath = relativepath Connect()
            Connect() Return New System.Management.ManagementObject(gManagementScope, gManagementPath, gObjectGetOptions)
            Return New System.Management.ManagementObject(gManagementScope, gManagementPath, gObjectGetOptions) End Function
        End Function
 Public Shared Function GetManagementObjectCollection(ByVal ClassOrSelectString As String) As System.Management.ManagementObjectCollection
        Public Shared Function GetManagementObjectCollection(ByVal ClassOrSelectString As String) As System.Management.ManagementObjectCollection Dim tmp As Management.ManagementObjectCollection = Nothing
            Dim tmp As Management.ManagementObjectCollection = Nothing
 ClassOrSelectString = ClassOrSelectString.Trim.ToUpper
            ClassOrSelectString = ClassOrSelectString.Trim.ToUpper If ClassOrSelectString.StartsWith("SELECT") Then
            If ClassOrSelectString.StartsWith("SELECT") Then tmp = Excute1(ClassOrSelectString)
                tmp = Excute1(ClassOrSelectString) Else
            Else QueryInfo.RelativePath = ClassOrSelectString
                QueryInfo.RelativePath = ClassOrSelectString tmp = Excute0()
                tmp = Excute0() End If
            End If
 Return tmp
            Return tmp End Function
        End Function
 <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
        <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _ Public Shared Sub MoveNext(ByVal mgmtObjectCollection As System.Management.ManagementObjectCollection, ByVal action As Action(Of System.Management.ManagementObject))
        Public Shared Sub MoveNext(ByVal mgmtObjectCollection As System.Management.ManagementObjectCollection, ByVal action As Action(Of System.Management.ManagementObject)) MoveNext(Of System.Management.ManagementObject)(mgmtObjectCollection.GetEnumerator, action)
            MoveNext(Of System.Management.ManagementObject)(mgmtObjectCollection.GetEnumerator, action) End Sub
        End Sub
 <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
        <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _ Public Shared Sub MoveNext(ByVal mgmtObject As System.Management.ManagementObject, ByVal action As Action(Of System.Management.PropertyData))
        Public Shared Sub MoveNext(ByVal mgmtObject As System.Management.ManagementObject, ByVal action As Action(Of System.Management.PropertyData)) MoveNext(Of System.Management.PropertyData)(mgmtObject.Properties.GetEnumerator, action)
            MoveNext(Of System.Management.PropertyData)(mgmtObject.Properties.GetEnumerator, action) End Sub
        End Sub
 <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
        <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _ Public Shared Sub MoveNext(Of T)(ByVal enumerator As IEnumerator, ByVal action As Action(Of T))
        Public Shared Sub MoveNext(Of T)(ByVal enumerator As IEnumerator, ByVal action As Action(Of T))
 If (enumerator Is Nothing) Then
            If (enumerator Is Nothing) Then Throw New ArgumentNullException("enumerator")
                Throw New ArgumentNullException("enumerator") End If
            End If If (action Is Nothing) Then
            If (action Is Nothing) Then Throw New ArgumentNullException("action")
                Throw New ArgumentNullException("action") End If
            End If
 While enumerator.MoveNext
            While enumerator.MoveNext action.Invoke(CType(enumerator.Current, T))
                action.Invoke(CType(enumerator.Current, T)) End While
            End While End Sub
        End Sub
 End Class
    End Class
 End Namespace
End Namespace

Delegate.vb
 Namespace WMI
Namespace WMI Public Delegate Sub GetCurentManagementObjectHandler(ByVal e As System.Management.ManagementObject)
    Public Delegate Sub GetCurentManagementObjectHandler(ByVal e As System.Management.ManagementObject) Public Delegate Sub GetCurentPropertyDataHandler(ByVal e As System.Management.PropertyData)
    Public Delegate Sub GetCurentPropertyDataHandler(ByVal e As System.Management.PropertyData) End Namespace
End Namespace
SimpleQuery.vb
 Namespace WMI
Namespace WMI
 Public Class SimpleQuery
    Public Class SimpleQuery
 Public Shared Event CurrentManagementObject As GetCurentManagementObjectHandler
        Public Shared Event CurrentManagementObject As GetCurentManagementObjectHandler Public Shared Event CurrentPropertyData As GetCurentPropertyDataHandler
        Public Shared Event CurrentPropertyData As GetCurentPropertyDataHandler
 Private Sub New()
        Private Sub New() End Sub
        End Sub
 Shared Sub New()
        Shared Sub New() End Sub
        End Sub
 Public Shared WriteOnly Property ServerName() As String
        Public Shared WriteOnly Property ServerName() As String Set(ByVal value As String)
            Set(ByVal value As String) Query.QueryInfo.ServerName = value
                Query.QueryInfo.ServerName = value End Set
            End Set End Property
        End Property
 Public Shared WriteOnly Property UserName() As String
        Public Shared WriteOnly Property UserName() As String Set(ByVal value As String)
            Set(ByVal value As String) Query.QueryInfo.UserName = value
                Query.QueryInfo.UserName = value End Set
            End Set End Property
        End Property
 Public Shared WriteOnly Property Password() As String
        Public Shared WriteOnly Property Password() As String Set(ByVal value As String)
            Set(ByVal value As String) Query.QueryInfo.Password = value
                Query.QueryInfo.Password = value End Set
            End Set End Property
        End Property
 Public Shared WriteOnly Property EnumerateDeep() As Boolean
        Public Shared WriteOnly Property EnumerateDeep() As Boolean Set(ByVal value As Boolean)
            Set(ByVal value As Boolean) Query.EnumerationOptions.EnumerateDeep = value
                Query.EnumerationOptions.EnumerateDeep = value End Set
            End Set End Property
        End Property
 Public Shared Sub Excute(ByVal mgmtSql As String)
        Public Shared Sub Excute(ByVal mgmtSql As String) If mgmtSql Is Nothing Then mgmtSql = ""
            If mgmtSql Is Nothing Then mgmtSql = ""
 If mgmtSql.IndexOf("."c) <> -1 Then
            If mgmtSql.IndexOf("."c) <> -1 Then OutPutManageMentObject(Query.GetManagementObject(mgmtSql))
                OutPutManageMentObject(Query.GetManagementObject(mgmtSql)) Else
            Else Query.MoveNext(Query.GetManagementObjectCollection(mgmtSql), AddressOf OutPutManageMentObject)
                Query.MoveNext(Query.GetManagementObjectCollection(mgmtSql), AddressOf OutPutManageMentObject) End If
            End If
 End Sub
        End Sub
 Private Shared Sub OutPutManageMentObject(ByVal e As System.Management.ManagementObject)
        Private Shared Sub OutPutManageMentObject(ByVal e As System.Management.ManagementObject) RaiseEvent CurrentManagementObject(e)
            RaiseEvent CurrentManagementObject(e) Query.MoveNext(e, AddressOf OutPutPropertyData)
            Query.MoveNext(e, AddressOf OutPutPropertyData) End Sub
        End Sub
 Private Shared Sub OutPutPropertyData(ByVal e As System.Management.PropertyData)
        Private Shared Sub OutPutPropertyData(ByVal e As System.Management.PropertyData) RaiseEvent CurrentPropertyData(e)
            RaiseEvent CurrentPropertyData(e) End Sub
        End Sub
 End Class
    End Class
 End Namespace
End Namespace
WMIClass.vb
 Namespace WMI
Namespace WMI Public Class WMIClass
    Public Class WMIClass Private Sub New()
        Private Sub New() End Sub
        End Sub
 Private Shared gAll(-1) As String
        Private Shared gAll(-1) As String Private Shared gIndex As Integer = 0
        Private Shared gIndex As Integer = 0
 Public Shared ReadOnly Property All() As String()
        Public Shared ReadOnly Property All() As String() Get
            Get Return gAll
                Return gAll End Get
            End Get End Property
        End Property
 Shared Sub New()
        Shared Sub New() Dim tmpRoot As New System.Management.ManagementClass()
            Dim tmpRoot As New System.Management.ManagementClass() Dim tmpOptions As New System.Management.EnumerationOptions()
            Dim tmpOptions As New System.Management.EnumerationOptions() tmpOptions.EnumerateDeep = True
            tmpOptions.EnumerateDeep = True Dim tmpObjects As System.Management.ManagementObjectCollection = tmpRoot.GetSubclasses(tmpOptions)
            Dim tmpObjects As System.Management.ManagementObjectCollection = tmpRoot.GetSubclasses(tmpOptions) ReDim gAll(tmpObjects.Count - 1)
            ReDim gAll(tmpObjects.Count - 1)
 Using tmpObjects
            Using tmpObjects Query.MoveNext(Of Management.ManagementObject)(tmpObjects.GetEnumerator, AddressOf GetAllClass)
                Query.MoveNext(Of Management.ManagementObject)(tmpObjects.GetEnumerator, AddressOf GetAllClass) End Using
            End Using
 Array.Sort(gAll)
            Array.Sort(gAll) tmpOptions = Nothing
            tmpOptions = Nothing tmpRoot = Nothing
            tmpRoot = Nothing End Sub
        End Sub
 Private Shared Sub GetAllClass(ByVal obj As System.Management.ManagementObject)
        Private Shared Sub GetAllClass(ByVal obj As System.Management.ManagementObject) gAll(gIndex) = obj("__Class").ToString
            gAll(gIndex) = obj("__Class").ToString gIndex += 1
            gIndex += 1 End Sub
        End Sub
 End Class
    End Class End Namespace
End Namespace
以下为使用方法:
为了显示查询出来的信息,我这里仅取Properties,读取的是里头的PropertyData信息。为此,在应用项目中,用了下面一个类来简单获取:
 <Serializable()> _
<Serializable()> _ Public Class PropertyDataInfo
Public Class PropertyDataInfo Private gName As String
    Private gName As String Private gValue As String
    Private gValue As String Private gIsArray As Boolean = False
    Private gIsArray As Boolean = False Private gStatus As Boolean = True
    Private gStatus As Boolean = True
 Sub New()
    Sub New() End Sub
    End Sub
 Public Sub GetData(ByVal obj As Management.PropertyData)
    Public Sub GetData(ByVal obj As Management.PropertyData) With obj
        With obj gName = .Name
            gName = .Name gIsArray = .IsArray
            gIsArray = .IsArray gStatus = True
            gStatus = True Try
            Try If gIsArray Then
                If gIsArray Then gValue = String.Join(",", CType(obj.Value, String()))
                    gValue = String.Join(",", CType(obj.Value, String())) Else
                Else gValue = obj.Value.ToString
                    gValue = obj.Value.ToString End If
                End If Catch ex As Exception
            Catch ex As Exception gValue = ""
                gValue = "" gStatus = False
                gStatus = False End Try
            End Try End With
        End With End Sub
    End Sub
 Public Property Name() As String
    Public Property Name() As String Get
        Get Return gName
            Return gName End Get
        End Get Set(ByVal value As String)
        Set(ByVal value As String) gName = value
            gName = value End Set
        End Set End Property
    End Property
 Public Property Value() As String
    Public Property Value() As String Get
        Get Return gValue
            Return gValue End Get
        End Get Set(ByVal value As String)
        Set(ByVal value As String) gValue = value
            gValue = value End Set
        End Set End Property
    End Property
 Public Property IsArray() As Boolean
    Public Property IsArray() As Boolean Get
        Get Return gIsArray
            Return gIsArray End Get
        End Get Set(ByVal value As Boolean)
        Set(ByVal value As Boolean) gIsArray = value
            gIsArray = value End Set
        End Set End Property
    End Property
 Public Property Status() As Boolean
    Public Property Status() As Boolean Get
        Get Return gStatus
            Return gStatus End Get
        End Get Set(ByVal value As Boolean)
        Set(ByVal value As Boolean) gStatus = value
            gStatus = value End Set
        End Set End Property
    End Property
 Public Sub Clear()
    Public Sub Clear() gName = Nothing
        gName = Nothing gValue = Nothing
        gValue = Nothing gIsArray = False
        gIsArray = False gStatus = True
        gStatus = True End Sub
    End Sub
 Public Shadows Function ToString() As String
    Public Shadows Function ToString() As String Return String.Format("属性:{0},值:{1},数组:{2},状态:{3}", gName, gValue, gIsArray, gStatus)
        Return String.Format("属性:{0},值:{1},数组:{2},状态:{3}", gName, gValue, gIsArray, gStatus) End Function
    End Function
 End Class
End Class
上面状态为False时表示无法读取该属性值。数组为True表示该属性的值类型是一数组。
使用时的大概代码是这样的:

 Public Class Form1
Public Class Form1 Dim mItem As New PropertyDataInfo
    Dim mItem As New PropertyDataInfo
 Private Delegate Sub SetTextCallback(ByVal [text] As String)
    Private Delegate Sub SetTextCallback(ByVal [text] As String) Private Sub SetLoadingLableText(ByVal [text] As String)
    Private Sub SetLoadingLableText(ByVal [text] As String) Me.ListBox1.Items.Add([text])
        Me.ListBox1.Items.Add([text]) End Sub
    End Sub
 Private Sub ListBoxItemAdd(ByVal message As String)
    Private Sub ListBoxItemAdd(ByVal message As String) If Me.ListBox1.InvokeRequired Then
        If Me.ListBox1.InvokeRequired Then Dim d As New SetTextCallback(AddressOf SetLoadingLableText)
            Dim d As New SetTextCallback(AddressOf SetLoadingLableText) Me.Invoke(d, New Object() {message})
            Me.Invoke(d, New Object() {message}) Else
        Else SetLoadingLableText(message)
            SetLoadingLableText(message) End If
        End If Application.DoEvents()
        Application.DoEvents() End Sub
    End Sub
 Private Sub ButtonClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonClear.Click
    Private Sub ButtonClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonClear.Click ListBox1.Items.Clear()
        ListBox1.Items.Clear() End Sub
    End Sub
 Private Sub ButtonQuery_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonQuery.Click
    Private Sub ButtonQuery_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonQuery.Click Start()
        Start() End Sub
    End Sub Private Sub Start()
    Private Sub Start() ListBoxItemAdd(String.Format("Begin AT {0}", Now.ToString))
        ListBoxItemAdd(String.Format("Begin AT {0}", Now.ToString)) ListBoxItemAdd("")
        ListBoxItemAdd("") LzmTW.WMI.SimpleQuery.ServerName = Me.TextBoxServerName.Text
        LzmTW.WMI.SimpleQuery.ServerName = Me.TextBoxServerName.Text
 LzmTW.WMI.SimpleQuery.UserName = Me.TextBoxUserName.Text
        LzmTW.WMI.SimpleQuery.UserName = Me.TextBoxUserName.Text LzmTW.WMI.SimpleQuery.Password = Me.TextBoxPassword.Text
        LzmTW.WMI.SimpleQuery.Password = Me.TextBoxPassword.Text LzmTW.WMI.SimpleQuery.EnumerateDeep = Me.CheckBoxEnumerateDeep.Checked
        LzmTW.WMI.SimpleQuery.EnumerateDeep = Me.CheckBoxEnumerateDeep.Checked
 Try
        Try LzmTW.WMI.SimpleQuery.Excute(Me.ComboBoxSelect.Text)
            LzmTW.WMI.SimpleQuery.Excute(Me.ComboBoxSelect.Text) Catch ex As Exception
        Catch ex As Exception ListBoxItemAdd(String.Format("Error! Msg:{0}", ex.Message))
            ListBoxItemAdd(String.Format("Error! Msg:{0}", ex.Message)) End Try
        End Try
 ListBoxItemAdd("")
        ListBoxItemAdd("") ListBoxItemAdd(String.Format("End AT {0}", Now.ToString))
        ListBoxItemAdd(String.Format("End AT {0}", Now.ToString)) End Sub
    End Sub

 Private Sub GetCurentManagementObject(ByVal e As System.Management.ManagementObject)
    Private Sub GetCurentManagementObject(ByVal e As System.Management.ManagementObject) ListBoxItemAdd("")
        ListBoxItemAdd("") ListBoxItemAdd(e.ToString)
        ListBoxItemAdd(e.ToString) mItem.Clear()
        mItem.Clear() End Sub
    End Sub
 Private Sub GetCurentPropertyData(ByVal e As System.Management.PropertyData)
    Private Sub GetCurentPropertyData(ByVal e As System.Management.PropertyData) mItem.GetData(e)
        mItem.GetData(e) ListBoxItemAdd(mItem.ToString)
        ListBoxItemAdd(mItem.ToString) End Sub
    End Sub
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   AddHandler LzmTW.WMI.SimpleQuery.CurrentManagementObject, AddressOf GetCurentManagementObject
        AddHandler LzmTW.WMI.SimpleQuery.CurrentManagementObject, AddressOf GetCurentManagementObject AddHandler LzmTW.WMI.SimpleQuery.CurrentPropertyData, AddressOf GetCurentPropertyData
        AddHandler LzmTW.WMI.SimpleQuery.CurrentPropertyData, AddressOf GetCurentPropertyData Me.ComboBoxSelect.DataSource = LzmTW.WMI.WMIClass.All
        Me.ComboBoxSelect.DataSource = LzmTW.WMI.WMIClass.All End Sub
    End Sub
 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged If ListBox1.SelectedItem Is Nothing Then Exit Sub
        If ListBox1.SelectedItem Is Nothing Then Exit Sub Clipboard.SetDataObject(ListBox1.SelectedItem, False)
        Clipboard.SetDataObject(ListBox1.SelectedItem, False)
 End Sub
    End Sub
 End Class
End Class

 
 
                     
                    
                 
                    
                 
        
 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号