Могу ли я получить путь к исполняемому файлу из объекта System.Management.EventArrivedEventArgs?

StackOverflow https://stackoverflow.com/questions/2134121

  •  22-09-2019
  •  | 
  •  

Вопрос

Я использую 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:

Выберите путь к исполняемому файлу из Win32_ProcessStartTrace

Есть ли способ, которым я могу избежать выполнения поиска объекта, но все равно получить ExecutionPath , используя то, что уже доступно в объекте EventArrivedEventArgs?

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

Это было полезно?

Решение

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

Другие советы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top