se ho un'attività pianificata Windows che esegue il file EXE. c'è un modo da dentro il mio EXE per trovare l'istanza dell'attività pianificata che mi ha attivato?come posso trovare l'ID InstanceID/correlazione della operazione pianificata che ha iniziato il mio processo
risposta
Risposta facile per quello sarebbe: no.
La cosa migliore che si può fare è accedere in modo programmatico alla libreria del task scheduler e vedere se il processo si è in modalità "in esecuzione", ottenere il PID del processo (lo scheduler lo scrive effettivamente nella sua cronologia) e confrontarlo al tuo.
La cosa più semplice da fare sarebbe accedere ai registri eventi di sistema e vedere se c'è qualche riferimento all'esecuzione del file exe (anche se potrebbe non essere un log di questo tipo se l'exe è stato effettivamente eseguito).
L'unica cosa che è possibile associare al processo è il chiamante (che potrebbe essere SERVIZIO DI RETE o un account predefinito) che non fornisce alcuna informazione in merito alla sua programmazione.
Ho provato per un tempo per risolvere questo stesso problema, tuttavia non sembra possibile utilizzando l'API corrente. Se si dispone di un riferimento all'attività in esecuzione, è possibile ottenere il PID del motore di attività che l'ha avviato. Da lì, si possibile di andare al registro eventi compito e cercare gli ultimi eventi con ID 200 (azione introduttiva) aventi lo stesso PID del motore, ma dal momento che è possibile avere più processi attività in esecuzione sotto un unico motore di attività, è possibile 't andare oltre con assoluta certezza (ad esempio, una seconda istanza del processo potrebbe essere in esecuzione sotto lo stesso PID del motore - non sarà in grado di dire quale ID di correlazione appartiene al vostro processo di destinazione.)