Posso ottenere l'ExecutablePath da un oggetto System.Management.EventArrivedEventArgs?

StackOverflow https://stackoverflow.com/questions/2134121

  •  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?

È stato utile?

Soluzione

No, quello che hai è buono come si arriva. Le proprietà disponibili sono elencati qui ...

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top