I sistemi operativi Windows offrono agli sviluppatori molteplici strumenti per configurare l’esecuzione automatica di un’applicazione al momento del caricamento del desktop. Il modo più veloce per controllare i programmi all’avvio consiste nell’accedere al Task Manager (CTRL+MAIUSC+ESC
) quindi, in Windows 10 e 11, fare clic sulla scheda Avvio oppure su App di avvio.
Come abbiamo spesso osservato, è importante controllare periodicamente i programmi che si avviano in automatico all’accensione del PC. Il rischio, via via che si installano nuove applicazioni, è che la procedura di boot di Windows diventi sempre più pesante e, quindi, più lenta. In caso di PC lento, i programmi in avvio automatico sono tra le prime cose da controllare. Anche perché molti di essi, una volta avviati, tendono a restare sempre in esecuzione in background rallentando le altre attività.
In un altro articolo abbiamo visto tutte le locazioni di memoria che le applicazioni possono usare per porsi in esecuzione automatica.
Verificare i programmi all’avvio di Windows con il Task Manager
In Windows 10, il contenuto della scheda Avvio del Task Manager si presenta in maniera simile a quanto rappresentato in figura. Per ciascun elemento, Windows riporta il nome, l’autore, lo stato e indica qual è l’impatto sulla velocità di avvio del sistema in uso.
Di seguito come la struttura della sezione App di avvio in Windows 11. Le informazioni sono identiche a quelle restituite da Windows 10.
In entrambi i casi, è possibile cliccare su ciascuna voce in elenco quindi su Apri percorso file per portarsi nella cartella contenente il corrispondente file eseguibile. Il comando Cerca online dà modo di andare alla ricerca di maggiori informazioni sul Web.
Sia in Windows 10 che in Windows 11, la scheda Avvio e la sezione App di avvio permettono di disattivare il caricamento di uno o più programmi all’avvio del sistema operativo (tasto destro, Disabilita).
La ratio dovrebbe essere quella di controllare gli elementi caricati automaticamente, stabilirne l’identità quindi disinstallare le corrispondenti applicazioni che non servono più (di solito utilizzando la finestra App e funzionalità in Windows 10 oppure App installate in Windows 11).
La disattivazione di uno o più elementi dalla lista delle applicazioni eseguite all’avvio certamente può aiutare, ma è bene fare sempre uno sforzo in più e verificare se e quali programmi siano disinstallabili.
Uno script che estrae la lista dei programmi all’avvio di Windows
Esistono un’infinità di applicazioni di terze parti che permettono di verificare i programmi in esecuzione automatica. Tra quelli che, storicamente, abbiamo sempre preferito di più c’è Autoruns, un’applicazione che non è considerabile neppure di “terze parti” in quanto sviluppata da Mark Russinovich, in forze presso Microsoft da quando l’azienda di Redmond acquisì la sua società.
Tuttavia, lo stesso Autoruns non si accorge di tutti i programmi in esecuzione automatica: abbiamo spiegato il perché a suo tempo. Ci sono poi applicazioni di altri sviluppatori che analizzano ogni singolo programma all’avvio e suggeriscono quali potrebbero essere rimossi.
Di seguito proponiamo un semplice script PowerShell che consente di estrarre i programmi impostati per avviarsi automaticamente al boot di Windows. Si tratta di una soluzione “pronta per l’uso” destinata in particolare agli utenti più smaliziati. Può essere tenuta nella propria “cassetta degli attrezzi” informatica e utilizzata al bisogno.
Estrarre i programmi in esecuzione automatica con PowerShell
Il comando PowerShell proposto di seguito raccoglie informazioni sui programmi all’avvio del sistema esportando i dati un file CSV. Tale file, chiamato StartupPrograms.csv
, è generato nella cartella principale dell’account utente correntemente in uso:
Get-WmiObject -Query "SELECT * FROM Win32_StartupCommand" | Select-Object Name, Command, Location | Export-Csv -Path "$env:USERPROFILE\StartupPrograms.csv" -NoTypeInformation; Invoke-Item "$env:USERPROFILE\StartupPrograms.csv"
L’ultimo comando provvede ad aprire automaticamente il file CSV utilizzando l’applicazione associata a questo formato di file. Trattandosi di un file CSV, di norma dovrebbe essere aperto con un foglio elettronico come Excel, LibreOffice Calc o similari.
Il comando Get-WmiObject
deve essere copiato e incollato in una finestra PowerShell aperta con i diritti di amministratore (premere Windows+X
quindi scegliere Windows PowerShell, amministratore o Terminale Admin). L’ouput risulterà simile a quello riprodotto in figura.
Nella prima colonna si trova il nome assegnato all’elemento in esecuzione automatica, nella seconda il comando eseguito, nella terza la chiave del registro di sistema contenente l’oggetto. Se l’elemento non fosse richiamato dal registro di Windows, si leggerà il percorso della cartella corrispondente.
Per quanto riguarda il registro, HKLM
sta a significare che l’elemento è in esecuzione automatica per tutti gli account presenti sulla macchina; HKU
, soltanto per l’utente corrente. Per trovare uno specifico elemento, suggeriamo di fare riferimento alla chiave HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
del registro di sistema nel caso degli elementi in esecuzione automatica che, nella colonna Location, riportano HKU
.
Controllare i programmi eseguiti come operazioni pianificate
Un altro aspetto da verificare con particolare attenzione, sono i programmi impostati per avviarsi automaticamente con una certa periodicità. Sono visualizzabili ricorrendo all’Utilità di pianificazione di Windows.
Utilizzando lo script PowerShell che pubblichiamo in questa pagina, è possibile ottenere l’elenco delle operazioni pianificate che fanno riferimento a programmi “non-Microsoft”. Anche in questo caso, abbiamo fatto in modo di generare un file CSV (TaskSchedulerInfo.csv
), automaticamente aperto con l’applicazione predefinita per questo tipo di elementi.
Il codice PowerShell può essere selezionato nella sua interezza quindi incollato al prompt. In alternativa, si può predisporre un file .ps1
da eseguire come amministratore.
Le colonne Azione, Descrizione, Ultima esecuzione, Autore, Stato e Nome, forniscono tutti i dettagli su ciascuna operazione pianificata “non-Microsoft”. La prima colonna indica il percorso del file che viene invocato mentre Stato riporta uno dei seguenti valori:
- Ready (Pronto): L’attività è configurata correttamente e pronta per essere eseguita quando la condizione di trigger o pianificazione risulta soddisfatta.
- Running (In esecuzione): L’attività è attualmente in fase di esecuzione.
- Disabled (Disabilitato): L’operazione risulta disabilitata manualmente dall’utente o da un altro programma. In questo stato, l’attività non rispetta la pianificazione.
- Queued (In coda): L’attività è pianificata per l’esecuzione, ma è in attesa che si verifichi un evento di trigger o che sia raggiunto il momento specificato nella pianificazione.
- Unknown (Sconosciuto): Lo stato dell’attività non può essere determinato.
Verificare i servizi non-Microsoft utilizzati sul sistema
Il terzo insieme di elementi che riteniamo essenziali da verificare, sono i servizi di sistema “non-Microsoft”. Anche per questa specifica esigenza, proponiamo un semplice script PowerShell che provvede ad estrarli, senza richiedere passaggi addizionali:
# Definisci il percorso del file CSV nella cartella dell’utente corrente
$csvPath = Join-Path $env:USERPROFILE “servizi_non_microsoft.csv”# Ottieni i servizi non Microsoft e seleziona i campi desiderati
$services = Get-WmiObject win32_service | Where-Object { $_.Caption -notmatch “Windows” -and $_.PathName -notmatch “Windows” } | Select-Object DisplayName, PathName# Esporta i risultati in un file CSV
$services | Export-Csv -Path $csvPath -NoTypeInformation# Apri il file CSV con l’applicazione predefinita
Invoke-Item $csvPath
In questo caso PowerShell salva la lista dei servizi “non-Microsoft” nel file servizi_non_microsoft.csv
. Il contenuto del file CSV così generato e automaticamente aperto, consente di verificare il nome di ciascun servizio e il percorso dal quale è avviato.
I tre script che abbiamo presentato aiutano a comprendere quali programmi sono avviati a ogni ingresso in Windows. Dopo aver fatto le opportuno verifiche, è possibile ad esempio disinstallare le applicazioni che non si utilizzano e che contribuiscono soltanto a rallentare il sistema operativo.
Ovviamente i tre script PowerShell possono essere eventualmente combinati in un unico file .ps1
da eseguire come amministratore.