如何使用ManagementEventWatcher获取流程可执行路径

问题描述 投票:0回答:1

我知道如何使用ManagementEventWatcher获取ProcessID和ProcessName。我的代码运行良好。

我需要什么?我想获得一个过程之路。我要打印ProcessID,ProcessName和ProcessPath。

MY CODE:

Dim processStartEvent As ManagementEventWatcher = New ManagementEventWatcher("SELECT * FROM Win32_ProcessStartTrace")
Dim processStopEvent As ManagementEventWatcher = New ManagementEventWatcher("SELECT * FROM Win32_ProcessStopTrace")

Public Sub New()
    InitializeComponent()
    AddHandler processStartEvent.EventArrived, AddressOf Me.processStartEvent_EventArrived
    processStartEvent.Start()
    AddHandler processStopEvent.EventArrived, AddressOf Me.processStopEvent_EventArrived
    processStopEvent.Start()

End Sub

Private Sub processStartEvent_EventArrived(EventArrivedEventArgs, e)
    Dim processName As String = e.NewEvent.Properties("ProcessName").Value.ToString
    Dim processID As String = Convert.ToInt32(e.NewEvent.Properties("ProcessID").Value).ToString
    FileIO.WriteToFile("Process ID: " & processID & vbNewLine)
    FileIO.WriteToFile("Process Name: " & processName & vbNewLine)
End Sub

Private Sub processStopEvent_EventArrived(EventArrivedEventArgs, e)
    Dim processName As String = e.NewEvent.Properties("ProcessName").Value.ToString
    Dim processID As String = Convert.ToInt32(e.NewEvent.Properties("ProcessID").Value).ToString
    FileIO.WriteToFile("Process ID: " & processID & vbNewLine)
    FileIO.WriteToFile("Process Name: " & processName & vbNewLine)
End Sub

如果您不熟悉VB.net,也可以使用C#进行回答。

c# vb.net process wmi managementeventwatcher
1个回答
0
投票

如何从processID获取过程路径?这样

System.Diagnostics.Process.GetProcessById(processID).MainModule.FileName;

[有关MainModule Process.MainModule Property的一些信息

而且我不知道为什么在这里您从string转换为int,然后从int转换为string

Dim processID As String = Convert.ToInt32(e.NewEvent.Properties("ProcessID").Value).ToString()
© www.soinside.com 2019 - 2024. All rights reserved.