Могу ли я получить ExecutablePath из объекта System.Management.EventArrivedEventArgs? - PullRequest
1 голос
/ 25 января 2010

Я использую System.Management.ManagementEventWatcher, чтобы получить идентификатор процесса и путь к исполняемому файлу для запускаемого процесса:

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?

Все, что мне действительно нужно, это ProcessID и ExecuatblePath для каждого нового запускаемого процесса. Это самый простой способ получить это?

Ответы [ 2 ]

1 голос
/ 25 января 2010

Нет, то, что вы получили, так же хорошо, как и получается. Доступные свойства перечислены здесь ...

0 голосов
/ 25 января 2010
...