Puis-je obtenir le ExecutablePath d'un objet System.Management.EventArrivedEventArgs?
-
22-09-2019 - |
Question
J'utilise un System.Management.ManagementEventWatcher pour obtenir l'ID de processus et le chemin exécutable pour un processus commencé:
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"]);
}
En utilisant cette requête WQL:
Sélectionnez ExecutablePath de Win32_ProcessStartTrace
Est-il possible que je peux éviter de faire la recherche d'objets, mais encore obtenir le ExecutionPath, en utilisant ce qui est déjà disponible dans les EventArrivedEventArgs objet?
Tout ce que je vraiment besoin est le ProcessID et le ExecuatblePath pour chaque nouveau processus qui démarre. Est-ce la façon la plus simple d'obtenir cela?
La solution
Non, ce que tu as est aussi bon qu'il obtient. Les propriétés disponibles sont répertoriés ici ...
Autres conseils
Je crois que cet article peut vous aider à: Utilisation de WMI pour surveiller la création de processus, la suppression et la modification dans .NET