我正在使用 System.Management.ManagementEventWatcher 来获取已启动进程的进程 ID 和可执行路径:
private void startWatcher_EventArrived(Object sender, EventArrivedEventArgs e)
{
String processID = e.NewEvent.Properties["ProcessID"].Value.ToString();
var searcher = new ManagementObjectSearcher(new WqlObjectQuery(String.Format("Select ExecutablePath from Win32_Process where ProcessID = {0}", processID)));
ManagementObject managementObject = null;
foreach (ManagementObject obj in searcher.Get())
{
managementObject = obj;
break;
}
Console.WriteLine(managementObject["ExecutablePath"]);
}
使用这个 WQL 查询:
从 Win32_ProcessStartTrace 中选择 ExecutablePath
有没有一种方法可以避免进行对象搜索,但仍然可以使用 EventArrivedEventArgs 对象中已有的内容获取 ExecutionPath?
我真正需要的是每个启动的新进程的 ProcessID 和 ExecuatblePath。这是最简单的方法吗?