Sto utilizzando il seguente codice C# in un servizio di Windows (che viene eseguito come NT_AUTHORITY\SYSTEM
) per creare un gestore eventi per la ricezione di eventi di creazione processo (utilizzando WMI e WQL):Evento di avvio processo tramite WMI - Non tutto il processo inizia in corso di rilevamento
string queryString = "SELECT * FROM Win32_ProcessStartTrace";
ManagementEventWatcher watcher = new ManagementEventWatcher(new WqlEventQuery(queryString));
watcher.EventArrived += new EventArrivedEventHandler(ProcessStartEvent);
watcher.Start();
In ProcessStartEvent
:
int processId = int.Parse(e.NewEvent.Properties["ProcessId"].Value.ToString());
Process proc = Process.GetProcessById(processId);
Out("Received process: " + proc.ProcessName);
Il problema che sto avendo è che (per qualche strana ragione) non ogni avvio del processo è c apaged e segnalato dal programma. Se avvii circa 6 processi contemporaneamente, uno potrebbe non apparire nell'output.
Ho provato a fare qualche ricerca sull'acquisizione di eventi di creazione del processo utilizzando WMI, ma sono disponibili informazioni limitate. Ho visto che è anche possibile catturare processo inizia con qualcosa di simile a:
SELECT TargetInstance
FROM __InstanceCreationEvent
WITHIN 2
WHERE TargetInstance ISA 'Win32_Process'
(Come si vede nella this Stack Overflow answer)
Ci sono grandi differenze tra l'utilizzo __InstanceCreationEvent
e Win32_ProcessStartTrace
? Potrebbe essere questa la causa dei miei problemi?
C'è una spiegazione agli eventi perché io non sono in trattamento per inizia tutto processo? C'è qualcosa di più ovvio che sto sbagliando qui?
Possibile duplicato di [Eventi .NET per avvio eseguibile del processo] (http://stackoverflow.com/questions/848618/net-events-for-process-executable-start) –
@Dimi direi che è piuttosto un domanda diversa, poiché questo si concentra sul motivo per cui alcuni eventi apparentemente svaniscono mentre altri vengono catturati anche quando usano il presunto metodo "corretto" per catturare gli eventi di avvio del processo. – Xenon