Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用ManagementEventWatcher获取流程可执行路径_C#_Vb.net_Process_Wmi_Managementeventwatcher - Fatal编程技术网

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

C# 如何使用ManagementEventWatcher获取流程可执行路径,c#,vb.net,process,wmi,managementeventwatcher,C#,Vb.net,Process,Wmi,Managementeventwatcher,我知道如何使用ManagementEventWatcher获取ProcessID和ProcessName。我的代码运行良好 我需要什么? 我想得到一个过程的路径。 我想打印ProcessID、ProcessName和ProcessPath 我的代码: Dim processStartEvent As ManagementEventWatcher = New ManagementEventWatcher("SELECT * FROM Win32_ProcessStartTrace") Dim pr

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

我需要什么?
我想得到一个过程的路径。
我想打印ProcessID、ProcessName和ProcessPath

我的代码:

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#来回答


如何从
processID
获取进程路径。? 那样

System.Diagnostics.Process.GetProcessById(processID).MainModule.FileName;
这里有一些关于
main模块的信息

我不知道为什么这里要从
string
转换为
int
,然后从
int
转换为
string

Dim processID As String = Convert.ToInt32(e.NewEvent.Properties("ProcessID").Value).ToString()