Ricerca nel sito web

Questo comando PowerShell elenca tutte le app di avvio che Windows non ti mostra


Se hai mai aperto il Task Manager per controllare le app all'avvio come un utente Windows responsabile, ho delle notizie: la lista di avvio del Task Manager di Windows ti inganna. Non puoi ottimizzare il tuo PC per tempi di avvio più rapidi disabilitando le app all'avvio se non vedi tutti i processi di avvio.

Quello che Windows ti mostra nel Task Manager è un elenco selezionato di app di avvio tra i programmi e i servizi che hai installato, non l'intera situazione. Il vero elenco dei programmi che si avviano automaticamente con Windows è molto più lungo, e Windows non ha intenzione di mostrartelo a meno che tu non conosca questo comando PowerShell.

Il comando PowerShell per tutte le tue esigenze di avvio

Una singola riga che scava ovunque Windows nasconde le cose

Apri PowerShell, idealmente come amministratore, poiché alcune di queste voci richiedono accesso elevato per essere visualizzate, ed esegui il seguente comando:

Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Format-List

E questo è tutto. Questo singolo comando ti mostrerà le voci di avvio che il Task Manager non ha mai nemmeno accennato. Se preferisci un elenco più interattivo, sostituisci il flag Format-List con Out-GridView per ottenere una tabella ricercabile e ordinabile in una finestra separata. Questo ti permette di filtrare le voci e comprendere realmente i dati che vedi.

Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Out-GridView

Ultimo ma non meno importante, se vuoi salvare questa lista per confronti futuri, per esempio per controllare un sistema nel tempo, puoi anche reindirizzare i risultati in un file di testo:

Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User | Format-List > C:\startup_audit.txt

È un comando relativamente facile da usare una volta che hai capito la sintassi e, a seconda di quanto attentamente monitori le prestazioni del tuo PC, può diventare rapidamente uno dei preferiti. È anche uno di quei comandi di Windows facili da imparare ma che fanno una grande differenza.

Sta scavando molto più di quanto pensi

Cartelle di avvio, chiavi di registro e tutto ciò che sta nel mezzo






Il principale motore di questo comando è una classe WMI (Windows Management Instrumentation) chiamata Win32_StartupCommand, ufficialmente definita da Microsoft come "un comando che viene eseguito automaticamente quando un utente accede al sistema informatico." È stata progettata sia per l'uso locale sia per la gestione remota, il che significa che gli amministratori IT possono eseguirla su macchine di rete senza mai toccarle fisicamente.

La classe espone otto proprietà per ogni voce di avvio che trova: Caption, Command, Description, Location, Name, SettingID, User e UserID. Sono tutte utili, ma quelle di cui hai più bisogno sono Location e User, poiché indicano rispettivamente dove si trova esattamente la voce nel registro o nel file system e a quale account appartiene.

Windows ha parecchi posti dove i programmi possono registrarsi per avviarsi all'accensione. Il problema è che il Task Manager monitora solo un sottoinsieme di essi. Questo comando di PowerShell mostra le voci dai seguenti percorsi del Registro:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run: Si applica a tutti gli utenti della macchina. Utilizzato dalla maggior parte delle normali voci di avvio.
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run: Viene eseguito su base specifica dell'utente quando un determinato utente effettua il login.
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run: Memorizza le voci di avvio per i programmi a 32 bit in esecuzione su una versione a 64 bit di Windows.

Oltre a questi percorsi principali, ci sono varianti RunOnce delle prime due chiavi, che dovrebbero eseguire una volta e poi cancellarsi. Questo meccanismo è utilizzato dagli installer e dai servizi di aggiornamento, ma non sempre viene pulito come dovrebbe. Per quanto riguarda il terzo percorso, Windows gestisce automaticamente la redirezione del registro, ma il Task Manager può non rilevare le voci presenti in questo nodo, lasciando le registrazioni di avvio dei programmi a 32 bit effettivamente invisibili sui sistemi a 64 bit fino a quando non si va a cercarle.

E poi ci sono le cartelle di avvio. Proprio come le chiavi del Registro, anche queste sono suddivise in utenti singoli e a livello di sistema come segue:

  • C:\Users[NomeUtente]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup (per utente)
  • C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup (a livello di sistema)

Qualsiasi collegamento a programmi inserito in queste cartelle verrà eseguito all'avvio di Windows. Come probabilmente puoi immaginare, queste cartelle appaiono anche tramite il comando Win32_StartupCommand.

E sì, manca ancora qualche tempo di avvio

Dove le cose possono ancora nascondersi

Se pensavi di aver scoperto tutti i segreti di avvio di Windows con un solo comando, non ti sbagli. Win32_StartupCommand è un miglioramento rispetto a Task Manager, ma non mostra quanto segue:

  • Attività pianificate configurate per l'esecuzione all'accesso
  • Servizi di Windows impostati per l'avvio automatico
  • Punti di estensibilità ad avvio automatico (ASEP)

La scelta migliore qui è utilizzare lo strumento Autoruns di Sysinternals di Microsoft. Copre oltre 200 posizioni di avvio automatico, incluse estensioni del browser, estensioni della shell, notifiche di Winlogon e altro ancora.

Detto ciò, Autoruns è un download separato, richiede l'installazione ed è molto più complesso di un semplice comando PowerShell. Inoltre, non tutto ciò che Autoruns ti mostrerà ha senso disabilitarlo. Alcuni di essi sono servizi di Windows o di programmi di cui hai bisogno affinché il sistema funzioni correttamente.

WIn32_StartupCommand trova il giusto equilibrio tra accessibilità e dettaglio per la maggior parte degli utenti che vogliono solo un quadro realistico di ciò che viene caricato all'avvio. Cioè, a meno che tu non voglia conoscere ogni singolo processo che Windows esegue al boot.

Esegui questo una volta—vedrai perché è importante

Il modo più veloce per pulire il tempo di avvio

La ragione ovvia per eseguire questo comando è il tempo di avvio e le prestazioni. Se la tua macchina sembra lenta all'avvio, le voci che il Task Manager non riesce a mostrarti potrebbero essere proprio la soluzione. Controllori di aggiornamenti, agenti di sincronizzazione cloud, daemon di telemetria e bloatware OEM sono tutti colpevoli che si nascondono al di fuori della vista del Task Manager e rallentano il tuo sistema.

C'è anche un aspetto di sicurezza che vale la pena notare. Le chiavi di avvio del Registro di sistema sono uno dei meccanismi di persistenza più comunemente abusati dai malware. Eseguire periodicamente questo comando PowerShell, salvare l'output in un file e confrontarlo con un riferimento noto e pulito è un modo rapido per individuare aggiunte non autorizzate prima che si trasformino in un problema più grande. È per questo che questo comando è uno dei comandi Windows PowerShell che uso di più.

Il punto non è cancellare tutto ciò che non riconosci—quello è un ottimo modo per rompere il tuo sistema operativo. Il punto è sapere realmente cosa sta girando dietro le quinte sulla tua macchina. Il Task Manager non è stato progettato per darti quell'accesso; il terminale lo è.

Articoli correlati