Na manhã seguinte ao ciclo de updates de terça-feira, o portátil da facturação leva quatro minutos a arrancar, a Microsoft Store não abre e as impressoras falham a cada reinício. Nenhum destes sintomas pede reinstalação. O Windows traz duas ferramentas que reparam a instalação sem tocar nos dados nem nas aplicações: o SFC (System File Checker) verifica os ficheiros de sistema protegidos e substitui as versões incorrectas, e o DISM repara o componente store, a base que o próprio Windows usa para se manter íntegro. Quando o SFC termina com violações por corrigir, o problema raramente é o ficheiro — é a fonte de onde ele repõe, e essa fonte é o que o DISM recupera.

Este guia segue a ordem que se usa no terreno: o sfc /scannow em consola elevada, a leitura das linhas [SR] no CBS.log, o DISM /ScanHealth e o /RestoreHealth com fonte local quando o Windows Update não serve, a medição do WinSxS antes da limpeza, o /ResetBase irrevogável — e a linha em que a reparação online chega ao fim e o reset entra.

💡 TL;DR

O SFC repõe ficheiros protegidos a partir da fonte local, e tudo o que não consegue corrigir fica nas linhas [SR] do CBS.log. O DISM /Cleanup-Image é a camada por baixo: o /CheckHealth lê o estado em segundos, o /ScanHealth mede a corrupção e o /RestoreHealth repara sozinho pelo Windows Update — ou a partir de uma imagem montada, com /Source e /LimitAccess. Depois do reparo, o /AnalyzeComponentStore diz se a limpeza do WinSxS vale a pena e o /StartComponentCleanup executa-a: com /ResetBase os updates existentes tornam-se permanentes. Quando o /RestoreHealth também não chega, é hora do reset — o WinRE, para a máquina que nem arranca, é outro caminho.

1. O primeiro teste: sfc /scannow

O SFC percorre os ficheiros protegidos pelo Windows Resource Protection, detecta as versões incorrectas e repõe-as pela versão correcta da instalação. É a verificação rápida — corre-o sempre primeiro, com consola elevada: sem o direito de administrador, o comando nem começa.

sfc /scannow
sfc /verifyonly

O /scannow verifica e repara. O /verifyonly verifica sem tocar em nada — serve para confirmares o mesmo defeito numa segunda máquina antes de a levares ao reparo.

Para um ficheiro específico, o /scanfile aceita o caminho completo e tenta a reposição, e o /verifyfile só verifica:

sfc /scanfile=C:\Windows\System32\kernel32.dll

A máquina que nem arranca também fica coberta: o /offwindir e o /offbootdir apontam o SFC à instalação offline a partir de outro sistema, e o /offlogfile escolhe onde o registo dessa corrida fica guardado.

O resultado que interessa está no fim da corrida: se tudo ficou reparado, o caso fecha-se aqui. Se o SFC reportar ficheiros que não conseguiu corrigir, não corras o comando à espera de sorte diferente — o que falhou está escrito, linha a linha, no CBS.log.

2. Ler o CBS.log antes de decidir

Cada operação do SFC — de verificação e de reparação — fica registada no CBS.log, em %windir%\Logs\CBS\CBS.log, com a etiqueta [SR] no início das entradas dele. O resto do ficheiro é dos outros serviços: o Windows Modules Installer, que instala funcionalidades opcionais e actualizações, escreve no mesmo canal — o filtro por etiqueta é o que separa o que é do SFC do que não é.

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log > "%USERPROFILE%\Desktop\sfcdetails.txt"

O sfcdetails.txt acumula as corridas do SFC na máquina — usa a marca de tempo para chegares à última. As linhas que interessem têm esta cara (exemplo ilustrativo, campos abreviados):

[SR] Repairing 1 components
[SR] Cannot repair member file [l:18{9}]"img11.jpg" of Microsoft-Windows-Shell-Wallpaper-Common … hash mismatch
[SR] Verify and Repair Transaction completed. All files and registry keys listed in this transaction have been successfully repaired

A leitura de sysadmin: um Cannot repair member file … hash mismatch diz, na maior parte dos casos, que a cópia no store é que diverge e que a reposição falhou. O mesmo ficheiro a repetir em corridas seguidas é a assinatura de um store corrompido — não é má sorte — a fonte de onde o SFC repõe é que está corrompida.

ℹ Quando passar do SFC ao DISM

Violações no mesmo ficheiro em duas corridas do SFC, ou um output que termina com ficheiros por corrigir: o próximo comando é o DISM /Cleanup-Image — não um terceiro sfc /scannow.

Duas notas que poupam leitura: o Windows Resource Protection cobre ficheiros, pastas e chaves de registo essenciais do sistema: o SFC passa por tudo por omissão, e o /FILESONLY é que reduz o scan aos ficheiros. O que o scan nunca vê é a configuração de aplicações e do utilizador, os drivers de terceiros e os logs — um problema de configuração da aplicação não aparece no SFC. E cada linha [SR] é datada: o ficheiro acumula o servicing inteiro da máquina, e a hora é a âncora para leres só o teu evento.

3. DISM /Cleanup-Image: medir e reparar o store

O /Cleanup-Image concentra as operações de limpeza e recuperação sobre a imagem — em máquina online, a imagem é a instalação em uso. Os três níveis de diagnóstico cabem em três comandos:

DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth

O /CheckHealth é instantâneo — só lê se a imagem ficou marcada como corrupta por um processo falhado, sem percorrer nada. O /ScanHealth percorre o store à procura de corrupção e demora vários minutos. O /RestoreHealth faz o mesmo scan e repara automaticamente o que encontrar — é aqui que o reparo acontece.

A fonte de reparação é o detalhe que decide: sem mais nada, o DISM repõe a partir da localização por omissão das Features on Demand — a mesma fonte que essas funcionalidades usam, definida pelas políticas de grupo. Sem rede para o Windows Update, ou com ele a falhar, a via alternativa é uma fonte tua:

DISM /Online /Cleanup-Image /RestoreHealth /Source:E:\ISO\Win11\montado\windows /LimitAccess

O /Source aceita a pasta Windows de uma imagem montada — o install.wim da tua ISO aberto com o próprio DISM serve. O /LimitAccess fecha a porta ao Windows Update como fonte ou como suplente. A fonte tem de bater certo com a instalação reparada: build, edição e idioma — um install.wim de outra build é das falhas comuns do /Source. Se indicar mais do que uma fonte, o DISM copia da primeira em que encontrar os ficheiros e ignora as restantes.

A imagem online também tem uma linha própria de defesa: tenta reparar-se sozinha quando deixa de estar utilizável — é o mecanismo que corrige alguns problemas enquanto tu ainda nem abriste a consola.

⚠ O veredicto non-repairable

Quando a verificação responde non-repairable, a reparação de imagem chega ao fim: o reparo online deixa de ser fiável nessas condições, e o passo seguinte deixa de ser comandos — é a secção 6.

Comando O que faz Duração
… /CheckHealth Lê o flag de corrupção de um processo falhado — não percorre o store Segundos
… /ScanHealth Percorre o store à procura de corrupção Vários minutos
… /RestoreHealth O mesmo scan, com reparação automática a seguir Vários minutos
… /AnalyzeComponentStore Mede o tamanho real do store e recomenda a limpeza Rápido
… /StartComponentCleanup Remove as versões substituídas — tudo, com /ResetBase Longo em stores grandes

4. WinSxS: medir antes de limpar

A pasta C:\Windows\WinSxS é o componente store: guarda todas as versões de todos os componentes, incluindo as anteriores que permitem o rollback de um update. O Windows elimina essas versões antigas por si, passado algum tempo, e o tamanho aparente da pasta engana. O que interessa é o tamanho real, e o comando que o mede é:

DISM /Online /Cleanup-Image /AnalyzeComponentStore

O relatório dá o tamanho real do store e a recomendação de limpeza — em positivo, a limpeza vem com:

DISM /Online /Cleanup-Image /StartComponentCleanup

O /StartComponentCleanup remove as versões substituídas de imediato. A tarefa agendada com o mesmo nome (em Task Scheduler Library › Microsoft › Windows › Servicing) faz o mesmo trabalho com mais paciência: a correr automaticamente, espera 30 dias após a instalação de cada componente antes de tirar a versão anterior — a corres à mão, o corte é ao fim de uma hora. O DISM não tem essa espera nem esse limite.

ℹ Manutenção, não reparação

O /StartComponentCleanup devolve espaço e não corrige corrupção — corre-o depois do /RestoreHealth, nunca em substituição dele.

⚠ WinSxS não se apaga

Apagar ficheiros do WinSxS à mão pode deixar o sistema sem arrancar e sem poder receber actualizações. A limpeza passa sempre pelos comandos DISM ou pela tarefa agendada — nunca pelo Explorador.

Para o resto do disco, a outra perna da limpeza está no guia de limpeza dos ficheiros temporários — o WinSxS é a parte mais delicada, não a única.

5. /ResetBase: a decisão que não volta atrás

Juntar o /ResetBase muda o contrato da limpeza: o DISM remove todas as versões substituídas de todos os componentes, e os updates agora instalados deixam de poder ser desinstalados — os futuros continuam a entrar e a sair normalmente.

DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase

A decisão de sysadmin: corre-o na máquina que está estável há semanas. Numa que estás a depurar, a desinstalação do update suspeito é precisamente o teste de que vais precisar — e o /ResetBase tira-a da mesa. O /Defer adia a operação pesada para a manutenção automática, mas existe para o contexto de fábrica, onde o reset da base pode ultrapassar meia hora — na tua máquina não faz sentido.

Para confirmares quando correu da última vez, o Windows guarda a hora da operação em LastResetBase_UTC, sob o caminho de registo do Component Based Servicing:

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing" /v LastResetBase_UTC

6. Quando o reparo online chega ao fim

Três sinais marcam o fim da via de reparação online: violações no CBS.log que persistem depois de um /RestoreHealth concluído, um /CheckHealth que responde non-repairable, e um /ScanHealth ou /RestoreHealth que termina com erro mesmo com fonte local limpa.

Nesse estado, o custo do diagnóstico deixa de fazer sentido: o reset com manutenção dos ficheiros, ou o upgrade in-place pela ISO, reconstituem o sistema sem tocar nos dados. A diferença pesa no tempo e não nos ficheiros — a reparação online devolve-te a instalação tal como estava, com aplicações e configurações intactas, e o reset devolve-te uma instalação nova por baixo dos teus dados.

Falta o caso pior — a máquina que nem arranca para poderes abrir consola. Esse cenário pertence ao ambiente de recuperação (WinRE) e a outro guia: aí os comandos mudam de sede, e a máquina em si é que deixa de poder ser a fonte.

Erros Comuns

  • «Repeti o SFC três vezes e o mesmo ficheiro fica por corrigir» — o SFC repõe a partir da fonte local, e se essa fonte diverge, o comando não sai do sítio: segue para o /RestoreHealth e corre o SFC de novo a seguir.
  • «O /RestoreHealth falha sem rede para o Windows Update» — monta o install.wim da tua ISO e aponta-o com /Source e /LimitAccess.
  • «Apaguei ficheiros do WinSxS para libertar espaço» — é o caminho que deixa a máquina sem arrancar e sem poder actualizar: mede com o /AnalyzeComponentStore e limpa com o /StartComponentCleanup.
  • «Corri o /ResetBase e agora preciso de desinstalar um update problemático» — já não é possível: os updates existentes ficam permanentes, e é por isso que o /ResetBase só cabe numa máquina estável.
  • «O SFC termina limpo mas o problema persiste» — o Windows Resource Protection cobre ficheiros estáticos: configurações mutáveis, aplicações e drivers de terceiros ficam fora, e o CBS.log confirma o que ficou por fora.

Checklist final

  • Consola elevada, sempre — o SFC nem começa sem o direito de administrador.
  • sfc /scannow primeiro, e sfc /verifyonly nas máquinas segundas da fila, antes de tocares em cada uma.
  • findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log antes de qualquer decisão — o CBS.log diz o que falhou e porquê.
  • DISM /Online /Cleanup-Image /ScanHealth antes do /RestoreHealth, para saberes o que estás a reparar.
  • /Source com /LimitAccess a partir de um install.wim montado, quando o Windows Update não serve de fonte.
  • /AnalyzeComponentStore antes do /StartComponentCleanup — e o cleanup antes de qualquer /ResetBase.
  • /ResetBase só em máquina estável há semanas: os updates existentes tornam-se permanentes.
  • Reset com manutenção dos ficheiros como caminho do fim — quando o /RestoreHealth já não chega.

Fontes Oficiais

Artigos Relacionados