lunedì 5 novembre 2018

Disabilitare il superfetch (ed il prefetch) in Windows 10 (per versioni 1803 e successive)

AGGIORNAMENTO del 02/12/2018: a seguito di modifiche apportate da Microsoft in Windows 10 v1803 (Aprile 2018) e v1809 (Ottobre 2018) si è reso necessario aggiornare questo articolo rispetto alla prima stesura
Windows 10 v1809 Octor Update è stato un rilascio decisamente infelice, per non dire catastrofico: gravi bug hanno causato agli utenti perdite di dati ed una serie di altri inconvenienti che, alla fine, hanno indotto Microsoft a ritirarne la distribuzione e ritardarla "a Novembre 2018". Gli sfortunati utenti che hanno eseguito l'aggiornamento "in place" sostituendo la vecchia versione 1803 April Update ed eseguito la pulizia profonda del sistema, oltre al danno hanno subito la beffa: sugli hard-disk meccanici (HDD) l'inutile e dannoso Superfetch è abilitato in modo predefinito e non disabilitabile! Ciò non dovrebbe succedere per l'installazione "da zero" su unità SSD, ma è meglio controllare: sfortunatamente alcuni utenti segnalano che risulta attivo anche su installazione ex-novo fatta su SSD, il mio consiglio è di disabilitarlo immediatamente (vi ricordo che disabilitare il superfetch su un SSD ne preserva la durata).
Le chiavi nel registro di Windows ed il servizio che regola il funzionamento del superfetch è stato modificato: il servizo "Ottimizzazione avvio" è scomparso. Nell'articolo Disattivare prefetch e superfetch in Windows 10 (fino alla versione v1709 Fall Creators Update) avevamo spiegato perché sia conveniente disattivare il servizio, eventualmente agendo sul registro di configurazione di Windows. Con questa versione le tecniche che avevamo illustrato in genere non funzionano (a meno di non ricorrere a tool esterni):
  1. il servizio "Ottimizzazione avvio" (ossia il superfetch) non è più presente nella lista dei servizi di Windows, quindi non si può impostarlo su "Disabilitato" ;
  2. dal registro di Windows è sparita anche la chiave relativa al prefetch
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnablePrefetcher
  3. la modifica manuale del registro relativamente al superfetch spesso non funziona: se provate a creare manualmente o modificare le 2 chiavi che controllano il superfetch
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\EnableSuperfetch
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\SfTracingState
  4. al successivo riavvio non solo le modifiche possono essere ignorate, ma Windows 10 può eliminare le chiavi che avete creato.
Bisogna procedere in un altro modo: questa volta la prima cosa da fare è disabilitare il servizio "SysMain", che rimpiazza completamente i "vecchi" servizi "Superfetch" (nelle versioni in Inglese di Windows) e "Ottimizzazione Avvio" (nelle versioni in italiano):
  1. dai collegamenti rapidi selezionare "Esegui" e digitare services.msc 
  2. individuare il servizio "SysMain" ed impostarlo come Disabilitato, premere Applica e OK;
  3. chiudere il tool di configurazione servizi e riavviare Windows 10. 
SysMain - Windows 10 superfetch
Dopo aver disattivato il servizio SysMain e riavviato Windows 10 il superfetch è disabilitato. La chiave di registro che attiva/disattiva il superfetch è
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-Superfetch/Main
se entrate nel registro a tale percorso, dovreste vedere (sul riquadro a destra) il valore Enabled impostato a 0 (0 = superfetch disabilitato).
Se lo desiderate, in aggiunta potete usare usate il tool Ultimate Windows Tweaker (come minimo la versione 4.5) per impostare anche le chiavi di registro usate nelle precedenti versioni di Windows 10). Probabilmente l'aggiunta di queste chiavi potrebbe non essere necessaria (io l'ho fatta per estremo scrupolo):
  • scaricate Ultimate Windows Tweaker (https://www.thewindowsclub.com/ultimate-windows-tweaker-4-windows-10);
  • estraete l'eseguibile ed avviatelo con privilegi di amministrazione;
  • portatevi alla scheda Performance;
  • abilitare le opzioni "Disable Prefetch Service" e "Disable Superfetch Service"
  • premere il pulsante Apply Tweaks, chiudere l'applicazione e riavviare Windows 10.
Ultimate Windows Tweaker - Prefetch e Superfetch
Quando il sistema si sarà riavviato, entrate nel registro di configurazione e portatevi al percorso delle chiavi precedentemente indicate. Potete arrivare ad avere la situazione che avevamo già visto nell'articolo precedente, ossia con le chiavi di prefetch e superfetch entrambe impostate a zero (la chiave SfTracingState solitamente viene impostata ad 1). Potete eventualmente crearle/modificarle a mano.
Registro di Windows - Prefetch e Superfetch
Per raggiungere questa situazione potreste dover fare diversi tentativi: in tal caso dovrete prima avviare Ultimate Windows Tweaker, abilitare di nuovo prefetch e superfetch (togliendo la spunta alle caselle), applicare i cambiamenti, uscire dal tool e riavviare Windows. Al successivo riavvio dovrete ripetere la procedura per la disabilitazione (mettendo di nuovo la spunta alle caselle), applicare i cambiamenti, uscire dal tool e riavviare Windows. In genere bastano 2-3 tentativi e avrete finalmente disabilitato di nuovo sia il prefetch che il superfetch. Per completare il lavoro, andate nella cartella \Windows\Prefetch e cancellate tutti i file inutili in essa contenuti (non è necessario eliminare la sottocartella \ReadyBoot).

POTREBBE INTERESSARTI ANCHE…