2010-01-25 3 views
1

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

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, используя то, что уже доступно в EventArrivedEventA rgs объект?

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

ответ

1

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