Verificare quali programmi vengono eseguiti in Windows

Come attivare l'auditing dei processi caricati in Windows: un meccanismo per verificare i programmi eseguiti in automatico o su richiesta dell'utente.

Vi è mai capitato che, all’improvviso, si apra per una frazione di secondo la finestra del prompt dei comandi in Windows per poi chiudersi automaticamente?
La domanda che ci si pone è: cosa ha causato la comparsa di tale finestra? Di che cosa si trattava?

Il Task Manager, che può essere aperto premendo la combinazione di tasti CTRL+MAIUSC+ESC offre la lista completa di tutti i processi in esecuzione. Cliccando sulla scheda Dettagli, si può sapere quali applicazione sono al momento caricate in memoria: Task Manager Windows 10: che cosa permette di fare.

Il problema però è che il Task Manager non consente di risalire all’elenco dei programmi eseguiti in precedenza sul sistema perché, appunto, si limita a tracciare i processi correntemente in esecuzione.

Come controllare i programmi che vengono avviati in Windows

Windows, nelle edizioni Pro e successive, permette di abilitare il cosiddetto auditing dei processi in esecuzione. Ciò significa che il sistema operativo offre la possibilità di monitorare e memorizzare nel registro degli eventi tutti i processi che vengono via a via avviati sulla macchina in uso.

Per procedere in tal senso, basta premere Windows+R quindi digitare gpedit.msc.
Nella sezione Configurazione computer, si dovrà selezionare Impostazioni di Windows, Impostazioni sicurezza, Criteri locali, Criteri controllo quindi, nel pannello di destra, fare doppio clic su Controlla tracciato processo.

Nella finestra seguente si dovrà spuntare la casella Operazioni riuscite quindi cliccare OK.

Consigliamo anche di selezionare Configurazione computer, Modelli amministrativi, Sistema, Controlla Creazione di processi quindi di fare doppio clic sull’impostazione Includi riga di comando negli eventi di creazione del processo.
In questo caso bisognerà selezionare l’opzione Attivata e fare clic sul pulsante OK.

Dopo aver riavviato il sistema, Windows inizierà a registrare la lista dei processi via a via eseguiti sulla macchina.

Per ottenere la lista dei processi avviati sulla macchina, basterà aprire una finestra di PowerShell con i diritti di amministratore (combinazione di tasti Windows+X, scegliere Windows PowerShell (amministratore)) quindi digitare quanto segue:

Get-WinEvent -FilterHashtable @{logname='Security';id=4688;StartTime=Get-Date -Format 'dd/MM/yyyy'} | Select TimeCreated,@{ Label = "Nome processo"; Expression = { $_.Properties[13].Value } }

Usando la pipeline di PowerShell (vedere PowerShell per esempi: cosa si può fare) si può estrarre dal registro degli eventi di Windows (consultabile in forma grafica premendo Windows+R quindi digitando eventvwr.msc) la lista completa dei programmi eseguiti (evento 4688).

Il comando Get-Date -Format 'dd/MM/yyyy' consente di estrarre soltanto i processi eseguiti nella data odierna. Sostituendo a tale stringa una data è possibile indicare un giorno specifico. Esempio:

Get-WinEvent -FilterHashtable @{logname='Security';id=4688;StartTime='01/01/2020'} | Select TimeCreated,@{ Label = "Nome processo"; Expression = { $_.Properties[13].Value } }

Se ci si volesse limitare ai soli processi che vengono eseguiti da una finestra del terminale (con riferimento alla comparsa per un istante della schermata a sfondo nero in Windows), si può usare il comando seguente:

Get-WinEvent -FilterHashtable @{logname='Security';id=4688;StartTime=Get-Date -Format 'dd/MM/yyyy'} | ? { $_.Properties[5].Value -Match 'conhost' } | Select TimeCreated,@{ Label = "Nome processo"; Expression = { $_.Properties[13].Value } }
conhost

identifica infatti i processi che sono stati eseguiti da una finestra del terminale.
Se la brevissima comparsa della finestra del terminale si fosse verificata pochi secondi prima, basterà aggiungere Select -First 10 in fondo al comando per selezionare solo gli ultimi 10 processi avviati e tracciati nel registro degli eventi:

Get-WinEvent -FilterHashtable @{logname='Security';id=4688;StartTime=Get-Date -Format 'dd/MM/yyyy'} | ? { $_.Properties[5].Value -Match 'conhost' } | Select TimeCreated,@{ Label = "Nome processo"; Expression = { $_.Properties[13].Value } } | Select -First 10

Per disattivare l’auditing dei processi in Windows, basterà intervenire nuovamente sulle due impostazioni a livello di Editor dei criteri di gruppo ripristinando i valori di default e riavviando il sistema.

Ti consigliamo anche

Link copiato negli appunti