代码之家  ›  专栏  ›  技术社区  ›  Mike Schall

转换。网络管理基础对象到管理对象

  •  1
  • Mike Schall  · 技术社区  · 17 年前

    Imports System.Management
    
    Public NotInheritable Class EntryPoint
    
        Public Shared Sub Main(ByVal args() As String)
    
            Dim scope As New ManagementScope("\\.\root\cimV2")
            Dim query As New WqlEventQuery("__InstanceCreationEvent", TimeSpan.FromSeconds(1), "TargetInstance isa ""Win32_Process""")
    
            Using watcher As New ManagementEventWatcher(scope, query)
                AddHandler watcher.EventArrived, AddressOf EventArrived
                watcher.Start()
                Console.WriteLine("Waiting for processes to start...")
                Console.ReadLine()
                watcher.Stop()
            End Using
    
        End Sub
    
        Private Shared Sub EventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
    
            Dim targetInstance As ManagementBaseObject = e.NewEvent("TargetInstance")
            Dim process As New ManagementObject("win32_process.handle=" + targetInstance("ProcessId").ToString())
            Dim output(1) As String
            process.InvokeMethod("GetOwner", output)
            Console.WriteLine("Process {0} started by {2}\{1}", targetInstance("Name"), output(0), output(1))
    
        End Sub
    
    End Class
    
    1 回复  |  直到 17 年前
        1
  •  2
  •   Adam Robinson    17 年前

    对象a ManagementObject 例子索引器可以将返回值作为 Base

    Private Shared Sub EventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
        Dim targetInstance As ManagementBaseObject = e.NewEvent("TargetInstance")
    
        If TypeOf targetInstance Is ManagementObject Then
            Dim mo as ManagementObject = DirectCast(targetInstance, ManagementObject)
            Dim output(1) as String
    
            mo.InvokeMethod("GetOwner", output)
    
            Console.WriteLine("Process {0} started by {2}\{1}", targetInstance("Name"), output(0), output(1))
        End If
    End Sub
    
    推荐文章