Le operazioni di recovery sono sempre molto delicate, ed in caso d'instabilità o blocco totale del sistema operativo è sempre meglio affidarsi al tool Ripristino Configurazione di Sistema, questo ovviamente fin ove possibile, possono presentarsi delle situazioni in cui sia necessario andare ad agire manualmente sui file di sistema per ripristinarli.
Nei sistemi Windows NT è presente il comando sfc scannow richiamabile da prompt, che consente di ripristinare i file di sistema mancanti o danneggiati.
Il comando System File Checker (sfc) analizzerà il vostro sistema alla ricerca di possibili file di sistema mancanti o danneggiati, magari a causa di un virus o di una installazione non andata a buon fine, permettendovi così di ripristinare Windows senza necessariamente ricorrere al classico formattone.
Per usare il comando sfc scannow bisogna avviare il prompt dei comandi con diritti di amministratore, è possibile fare questo in svariati modi, loggarsi sul computer come amministratore andare in start->esegui->cmd e premere invio, o portarsi nella cartella C:\Windows\system32\ e cliccare su cmd.exe col tasto destro e scegliere la voce "Esegui come Amministratore" o ancora selezionare cmd.exe e premere contemporaneamente i tasti Ctrl+Shift+Enter.
Una volta avviata la shell DOS del vostro Windows con diritti elevati, digitiamo al prompt il seguente comando:
sfc /scannow
e diamo Invio, a questo punto il sistema ci chiederà d'inserire il CD d'installazione di Windows, una volta inserito sfc scannow scansionerà tutti i file di sistema alla ricerca di quelli corrotti o mancanti (con tempi di scansione variabili) e li sostituirà con una nuova copia prelevandoli dal CD di Windows. Facciamo bene attenzione però, se il CD di Windows inserito non è corredato di tutti i service pack (SP) che noi abbiamo invece scaricato ed installato tramite Windows Update, il comando sfc scannow ripristinerà il sistema portandolo ad uno stato precedente l'aggiornamento, ovvero alla copia del CD Windows che possediamo. Assicuriamoci quindi d'inserire un CD di Windows con tutti gli ultimi Service Pack.
Può verificarsi che sfc scannow non riesca a ripristinare i file di sistema, da Windows Vista in poi infatti al termine della scansione viene riportato un messaggio recante la dicitura se tutto è andato a buon fine o se non è stato possibile ripristinare alcuni file di sistema, il report del risultato della scansione del comando sfc scannow è disponibile nel file CBS.log che si trova in C:\Windows\Logs, in questo caso saremo costretti ad andare a sostituire a mano i file di sistema non ripristinati. Il riassunto della scansione di sfc scannow leggibile nel file CBS.log non è purtroppo disponibile in Windows XP.
Leggere il file CBS.log alla ricerca dei file che sfc scannow non è riuscito a ripristinare, potrebbe risultare "impegnativo". Possiamo utilizzare allora sempre un comando dos che ci consenta d'individuare le sole voci che c'interessano, usiamo allora il comando dos findstr, sempre dal prompt digitiamo quindi:
findstr /C:"[SR] Cannot repair" %windir%\logs\cbs\cbs.log >sfcdetails.txt
Così facendo, stiamo dicendo al nostro computer di cercare all'interno del file CBS.log le sole righe che presentano la stringa "[SR] Cannot repair" e d'inserirle nel file di testo sfcdetails.txt (il quale verrà creato nella directory corrente a meno di non speficare un path diverso).
Per visualizzare il file sfcdetails.txt possiamo o aprirlo con notepad o lanciare l'edit sempre da dos, in questo modo:
edit sfcdetails.txt
e premere Invio. Visionando il file sfcdetails.txt leggeremo tutti i file di sistema che sfc scannow non è riuscito a ripristinare e che saremo costretti ad andare a sostituire manualmente. Anche se abbiamo i permessi di amministratore però non saremo in grado di cancellare o sovrascrivere i file di sistema di Windows, poichè questi oltre ad essere protetti appartengono esclusivamente ad uno speciale utente di Windows chiamato TrustedInstaller.
Per diventare proprietari (owner) dei file di sistema di Windows dobbiamo usare il comando takeown, sempre da DOS scriviamo:
takeown /f C:\Windows\explorer.exe
in questo modo ad esempio diventiamo proprietari del processo explorer.exe, per altri file ovviamente dobbiamo specificare il path assoluto del file di sistema di cui vogliamo diventare proprietari.
Ancora però non siamo in grado nè di cancellare nè di sovrascrivere il file di sistema, poichè anche se siamo proprietari non possediamo i diritti di controllo completo sul file, per averli dobbiamo usare il comando calcs (per essere precisi calcs Visualizza o modifica gli elenchi di controllo di accesso (ACL) di file e cartelle), al prompt dei comandi digitiamo quindi:
cacls C:\Windows\explorer.exe /E /G "User":F
Usando calcs modifichiamo l'ACL (opzione /E), assegnando all'utente "User" (specificare il proprio utente o gruppo, mettere administrators se si vuole assegnare tale diritto a tutti gli utenti amministratorei), il diritto di accesso (opzione /G, sta per grant), con controllo completo (opzione /F).
Adesso siamo in grado di sovrascrivere o sostituire i file di sistema che il comando sfc scannow non è riuscito a ripristinare, per sostituirli usiamo sempre il prompt dei comandi, digitando il comando:
COPY source_path_file destination_path_file
Ripetiamo questa operazione per tutti i file di sistema windows che sfc scannow non è riuscito a ripristinare, riavviamo e se tutto è andato a buon fine il recovery del nostro sistema è terminato riportando tutto alla normalità con Windows perfettamente funzionante.