Dim query As SelectQuery = New SelectQuery("Win32_Process")
Dim mgmtSearcher As ManagementObjectSearcher = New ManagementObjectSearcher(query)
For Each p As ManagementObject In mgmtSearcher.Get()
Dim s(1) As String
p.InvokeMethod("GetOwner", DirectCast(s, Object()))
MessageBox.Show("Name: " & p("Name").ToString() & Environment.NewLine & _
"Parent Process ID: " & p("ParentProcessId").ToString() & Environment.NewLine & _
"Process ID: " & p("ProcessId").ToString() & Environment.NewLine & _
"Handle: " & p("Handle").ToString() & Environment.NewLine & _
"CS Name: " & p("CSName").ToString() & Environment.NewLine & _
"Session ID: " & p("SessionId").ToString() & Environment.NewLine & _
"User: " & s(1) & "\" & s(0))
If p("Name").ToString() = "EXCEL.EXE" AndAlso s(0).ToString() = "MattP" Then
p.InvokeMethod("Terminate", Nothing)
End If
Next