2

我正在使用 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。这是最简单的方法吗?

4

2 回答 2

1

不,你得到的就是最好的。这里列出了可用的属性...

于 2010-01-25T19:32:54.447 回答
0

相信这篇文章可以帮助到你:使用WMI监控.NET中的进程创建、删除和修改

于 2010-01-25T17:24:36.963 回答