Я использую 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 для каждого нового процесса, который запускается. Это самый простой способ получить это?