Posso ottenere l'ExecutablePath da un oggetto System.Management.EventArrivedEventArgs?
-
22-09-2019 - |
Domanda
Io sto usando uno System.Management.ManagementEventWatcher per ottenere l'ID di processo e il percorso dell'eseguibile per un processo avviato:
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"]);
}
Con questo WQL query:
Seleziona ExecutablePath da Win32_ProcessStartTrace
C'è un modo che io possa evitare di fare la ricerca di oggetti, ma ancora ottenere l'ExecutionPath, utilizzando ciò che è già disponibile nelle EventArrivedEventArgs oggetto?
Tutto quello che ho davvero bisogno è il ProcessID e l'ExecuatblePath per ogni nuovo processo che si avvia. È questo il modo più semplice per ottenere che?
Soluzione
No, quello che hai è buono come si arriva. Le proprietà disponibili sono elencati qui ...
Altri suggerimenti
Credo che questo articolo può aiutarvi: Utilizzando WMI per monitorare la creazione del processo, eliminazione e modifica NET