我使用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查询:

  

从选择ExecutablePath   Win32_ProcessStartTrace

有没有办法,我能避免做对象搜索,但仍然得到ExecutionPath,用什么在EventArrivedEventArgs对象已经可用?

我真正需要的是进程ID和对于启动每一个新的进程ExecuatblePath。这是明白了吗?

最简单的方法
有帮助吗?

解决方案

没有,你得到了什么是尽善尽美。可用属性列这里...

其他提示

我相信这篇文章可以帮助你:使用WMI监视处理的创建,删除和修改在.NET

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top