¿Puedo obtener la ExecutablePath de un objeto System.Management.EventArrivedEventArgs?
-
22-09-2019 - |
Pregunta
Estoy usando un System.Management.ManagementEventWatcher para obtener el identificador de proceso y la ruta de ejecución en un proceso iniciado:
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"]);
}
El uso de este WQL de consulta:
Seleccione ExecutablePath de Win32_ProcessStartTrace
¿Hay una manera que puedo evitar hacer la búsqueda de objetos, pero aún así obtener la ExecutionPath, con lo que ya está disponible en el objeto EventArrivedEventArgs?
Todo lo que realmente es la necesidad ProcessID y la ExecuatblePath para cada nuevo proceso que se inicia. ¿Es esta la forma más sencilla de conseguir eso?
Solución
No, lo que tienes es tan bueno como se pone. Las propiedades disponibles se enumeran aquí ...
Otros consejos
Creo que este artículo puede ayudarle a: El uso de WMI para creación de procesos monitor, eliminación y modificación en .NET