Могу ли я получить путь к исполняемому файлу из объекта System.Management.EventArrivedEventArgs?
-
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 для каждого нового запускаемого процесса.Это самый простой способ получить это?
Решение
Нет, то, что у тебя есть, настолько хорошо, насколько это возможно.Перечислены доступные свойства вот...
Другие советы
Я верю, что эта статья может вам помочь: Использование WMI для мониторинга создания, удаления и модификации процессов в .NET