Reparando uma instalação do Windows usando SFC e CheckSUR/RestoreHealth

Se mesmo após ler todo o post e seguir as recomendações nele os problemas continuarem, por favor, comente informando o conteúdo do arquivo de log do DISM (dism.log e CBS.log) e do SFCFix (SFCFix.txt) e, no Windows Vista/7, comente também o conteúdo do arquivo de log do CheckSUR (CheckSUR.log).

ÍNDICE

  • 1. INTRODUÇÃO
  • 2. DESENVOLVIMENTO
    • 2.1 COMPONENT-BASED SERVICING (CBS) [WinSxS]
    • 2.2 SERVICING PLATFORM (TrustedInstaller)
      • 2.2.1 Deployment Image System Management (DISM)
    • 2.3 WINDOWS RESOURCE PROTECTION (WRP)
    • 2.4 REVERTENDO A INSTALAÇÃO DE ATUALIZAÇÕES PENDENTES
    • 2.5 CORRIGINDO CORRUPÇÕES DA COMPONENT STORE
      • 2.5.1 System File Checker (SFC)
      • 2.5.2 CheckSUR / RestoreHealth
      • 2.5.3 SFCFix
      • 2.5.4 Reparo Manual
  • 3. CONCLUSÃO
  • REFERÊNCIAS
  • ANEXOS
    • ANEXO A: CÓDIGOS DE ERROS DO COMPONENT-BASED SERVICING

1. Introdução

Este post visa detalhar o funcionamento dos mecanismos de recuperação do Windows e como restaurar arquivos de sistema ausentes, substituídos ou corrompidos.

2. Desenvolvimento

2.1 COMPONENT-BASED SERVICING (WinSxS)

Quando a Microsoft estava desenvolvendo o Windows Vista, eles notaram que os componentes tinham muitas interdependências entre eles e para manter cada arquivo sem quebrar outro componente que dependesse dele, a Microsoft introduziu a Component Based Servicing (CBS). [11] [Manutenção Baseada em Componentes, em tradução literal]

Em uma explicação simples, um componente é um pequeno grupo de arquivos agrupados devido a recursos, funcionalidade e reusabilidade. Um arquivo de manifesto define como os arquivos são agrupados em um componente. [12]

Usando o IIS como um exemplo, quando você instala ou remove recursos do IIS, você está efetivamente instalando ou desinstalando os componentes correspondentes. Note, porém, que não existe uma relação um-para-um entre um recurso e um componente. Um recurso pode consistir de diversos componentes. [12]

Todos os componentes do sistema podem ser encontrados no diretório WinSxS – de fato, nós chamamos este local de Component Store. Cada componente possuí um nome único que incluí a versão, língua, e arquitetura do processador para o qual ele foi feito. [11]

Um arquivo em disco consiste de três coisas: um nome/caminho, os dados do arquivo, e metadados. Um hardlink é uma conexão entre o nome do arquivo e seus dados. O diretório WinSxS é o único local onde um componente é encontrado no sistema, todas as outras instâncias de arquivos que você vê no sistema são projetados por hard linking da Component Store. [8] É crítico que qualquer caminho esperado por um aplicativo apareça como um arquivo físico no sistema de arquivos (partição) para suportar o carregamento do arquivo.

Dizer que os arquivos do diretório WinSxS apontam para o diretório System32 é tão correto quanto dizer que os arquivos do diretório System32 apontam para arquivos do diretório WinSxS. Nenhum dos dois é “dono” do arquivo, então não é realmente correto dizer que os arquivos atualmente existem em uma localização ou em outra. Ambas são somente referências para o mesmo dado no disco. O dado somente é removido do disco quanto todas as referências (hard links) são removidas.

Praticamente nada, exceto o núcleo do sistema de arquivos NTFS leva hard links em consideração. O espaço em disco é computado errado por que o Windows Explorer não entende os diversos tipos de symlinks. Instaladores sempre falharão em entendê-los também, o que leva a aplicativos recusando-se a instalar quando há espaço em disco disponível.

Com o lançamento do Windows Vista, a Microsoft iniciou a distribuição do seu sistema operacional usando um novo formato de arquivo: Windows Image Format (arquivos *.wim). Arquivos *.wim são arquivos comprimidos com espaço para armazenar metadados. Este formato de arquivo é inteligente por armazenar múltiplos arquivos em um único arquivo *.wim, mantendo somente uma instância de um mesmo arquivo, possibilitando a um único arquivo wim armazenar o Windows Starter, Home Premium, e Ultimate no mesmo disco! [10]

O Presidente da divisão Windows da Microsoft (Steven Sinofsky) e seu assistente disseram: … Enquanto é verdade que o WinSxS consome espaço em disco simplesmente por possuir arquivos metadados, diretórios, manifestos e catálogos, ela ocupa significantemente menos do que é reportado. O espaço em disco consumido atualmente varia, mas em um sistema típico é aproximadamente 400MB. [9]

Agora que você sabe o por quê da Component Store crescer tanto, sua próxima questão deverá ser porque as versões anteriores de componentes não são removidas. A resposta curta é confiabilidade. O diretório WinSxS armazena múltiplas versões de DLLs de forma a permitir que os aplicativos do Windows executem sem problemas de compatibilidade. Se você navegar dentro dela, você verá o que aparenta ser um monte de DLLs duplicadas, cada uma possuindo exatamente o mesmo nome. Elas são diferentes versões dos mesmos arquivos que vão sendo armazenadas; devido a diferentes programas requererem versões diferentes da mesma DLL. [6]

A raiz do problema são os compiladores do Visual Studio e DLLs redistribuíveis (redistributable). Na década de 90, a memória era escassa e era preferível referenciar uma DLL do sistema ao invés de incluí-la em cada aplicativo de forma a existir somente uma cópia da DLL em memória. Mas atualizar componentes compartilhados frequentemente resultava em programas que antes funcionavam normalmente parassem de funcionar sem motivo aparente. A solução da Microsoft para o problema foi especificar uma versão compatível da DLL em um arquivo de manifesto dentro de cada programa e carregá-la, criando bibliotecas lado-a-lado, em inglês “side-by-side assemblies” (SxS). [6]

O diretório WinSxS pode conter múltiplas versões da mesma biblioteca ou aplicativo. Se uma nova versão deste arquivo é parte do sistema operacional, mas um aplicativo em particular requer uma versão anterior para ser executado, então a versão anterior da DLL no diretório WinSxS será usada, mantendo a nova versão no seu local atual, para outros aplicativos que podem requerê-la. [6]

2.2 SERVICING PLATFORM (TrustedInstaller)

Caso você ainda não saiba, o Windows reescreveu a servicing platform (as ferramentas que gerenciam atualizações e service packs no Windows) por completo com o lançamento do Windows Vista. [11]

Agora, quando uma atualização é instalada, ela não é mais instalada em C:\Windows\system32 e C:\Windows\system32\dllcache como o Hotfix Installer do Windows XP (Update.exe) fazia. Ao invés disso, o Windows mantém múltiplas cópias do mesmo arquivo mas com versões diferentes no diretório WinSxS caso ela seja usada por mais de um componente do Windows. [11] Quando um hotfix, Service Pack ou qualquer outra atualização é realizada no Windows Vista ou Server 2008, estas mudanças são adicionadas a Component Store (WinSxS). Os arquivos que são atualizados são alterados para o estado “off”, e novos arquivos são alterados para o estado “on”. [22]

servicing platform do Windows Vista consulta o diretório WinSxS para determinar detalhes essenciais sobre o estado do sistema, como componentes instalados ou disponíveis para serem instalados (componentes opcionais) e quais atualizações estão no sistema para ajudar a determinar a aplicabilidade de um patch para um sistema específico. Adicionalmente, o estado do diretório WinSxS pode ser consultado “offline”. Isso significa que a imagem não precisa estar rodando para que atualizações possam ser aplicadas a ela. Este recurso do WinSxS garante grande flexibilidade e redução de custos a departamentos de TI que instalam o Windows Vista e superiores, aumentando a confiabilidade de manutenção. [11]

Um componente pode possuir múltiplos arquivos. Então, ainda que um bug esteja localizado em apenas um arquivo, o patch conterá todos os arquivos do componente. Todos os arquivos, independente de terem sido alterados ou não, serão compilados, seus números de versão serão incrementados, e comprimidos em uma atualização. Quando uma atualização é aplicada, o componente é atualizado na Component Store, e todos os arquivos incluídos com o componente são atualizados no sistema. Em um artigo da Base de conhecimentos da Microsoft que acompanha um hotfix para Windows Vista e Windows Server 2008, você irá notar que há uma seção no documento que lista os arquivos incluídos na atualização e outra seção do documento com os arquivos que realmente foram atualizados. [12]

Como você deve notar no Windows hoje em dia, quando você escolhe adicionar um recurso que não está instalado, o Windows não requer o DVD de instalação do Windows. Isso por que o recurso já está escondido como parte da instalação do Windows. Desta forma, se você adicionar um componente depois, você não corre o risco de adicionar um pedaço de código que já pode ter sido explorado antes. Esta é outra forma importante de manter o Windows atualizado e seguro, mesmo para componentes opcionais. [11]

2.1.1 Deployment Image System Management (DISM)

O DISM é uma ferramenta que acompanha o Windows 7 e superiores que permite personalizar a instalação do Windows.

O DISM substituí as ferramentas Package Manager (pkgmgr.exe), PEimg, e Intlcfg usadas com o Windows Vista RTM (O Windows Vista SP1 possuí suporte ao DISM). O DISM consolida a funcionalidade encontrada nestas três ferramentas, assim como oferece novas funcionalidades para melhorar a experiência de manutenção de imagens. [3]

As possibilidades que o DISM abre em relação a antiga instalação são enormes. Você pode usar o DISM para [3]:

  1. Adicionar, remover e enumerar pacotes e drivers.
  2. Habilitar ou desabilitar recursos do Windows.
  3. Aplicar mudanças em uma imagem a partir de um arquivo de resposta (unattend.xml).
  4. Definir configurações internacionais (como idioma, fuso horário, moeda).
  5. Atualizar uma imagem do Windows.
  6. Criar uma imagem de instalação do Windows.
  7. Diagnosticar problemas de instalação ou remoção de componentes se tornou mais fácil. Antigamente, cada instalador possuía um arquivo de log próprio. Agora, todos os erros encontrados durante a instalação ou remoção estão presentes em 2 arquivos (DISM.log e CBS.log).
  8. Suporta todas as plataformas (32-bit, 64-bit, e Itanium).
  9. É possível manter uma imagem de 32-bit de um host 64-bit e manter uma imagem 64-bit de um host 32-bit.
  10. Suporta scripts antigos do Package Manager.
  11. Método de distribuição (servicing) universal. Antigamente, era preciso ler a documentação específica de cada componente para instalá-lo silenciosamente nos computadores da rede, por exemplo. Á partir do Windows Vista, todos os componentes do Windows (como o Internet Explorer, Windows Media Player, Windows Mail) passaram a ser instalados, atualizados e removidos por uma única interface de instalação.
  12. Os instaladores passaram a ser multi-idioma. Imagine uma empresa multinacional, que possui computadores em Inglês, Português e Espanhol. O Administrador precisava possuir um levantamento dos computadores para distribuir a versão correta do componente dependendo do idioma do computador.

2.2 WINDOWS RESOURCE PROTECTION (WRP)

Devido a problemas de aplicações de terceiros serem capazes de substituir arquivos do sistema no Windows 95, a Microsoft implementou medidas de segurança para proteger arquivos do sistema de ataques maliciosos, corrupções ou DLL hell (quando os instaladores substituíam arquivos do sistema por suas próprias versões, independente de outros aplicativos necessitarem de uma diferente versão da mesma DLL). [19]

A Verificação de Arquivos do Sistema (System File Checker) foi inicialmente introduzida no Windows 98 como um programa gráfico. O método de proteção era básico, por isso, não prevenia ou reagia a alterações de arquivos em tempo real. [19]

Todos os sistemas baseados no Windows NT desde o Windows 2000 possuem proteção de arquivos do sistema em tempo real que não pode ser desabilitada, chamada Windows File Protection (WFP). O Windows Me introduziu a mesma proteção com o nome System File Protection (SFP). [19]

A Proteção de Arquivos do Windows (Windows Resource Protection ou WRP) é o novo nome da Windows File Protection (WFP). O WRP previne a substituição de arquivos essenciais do sistema, diretórios, e chaves de registros que são instaladas como parte do sistema operacional. Além do uso de arquivos de catálogo (que possuem o checksum e a assinatura digital de arquivos protegidos do sistema) como no WFP, o WRP adotou o uso de ACL (Access Control Lists). O WRP foi incluído inicialmente com o Windows Server 2008 e Windows Vista. [17]

Note que o não-uso de ACLs no WFP foi uma escolha de design: Ele não só permitia sua operação em sistemas não-NTFS, assim como prevenia que “mal” instaladores falhassem completamente devido a erro de permissões de arquivo (o WFP permitia a substituição do arquivo do sistema, mas segundos após restaurava o arquivo pela sua versão original). [20]

Permissões de acesso total a recursos protegidos pelo WRP são restritos ao TrustedInstaller através do serviço de Instalação de Módulos do Windows usando os seguintes mecanismos [18]:

  • Service Packs do Windows instalados pelo TrustedInstaller.
  • Atualizações instaladas pelo TrustedInstaller.
  • Upgrade de Sistema Operacional realizados pelo TrustedInstaller.
  • Atualizações instaladas através do Windows Update realizadas pelo TrustedInstaller.

Aplicativos e instaladores que tentam substituir recursos protegidos pelo WRP por outros meios que não os métodos especificados possuem o acesso negado e geram uma mensagem de erro de acesso negado. [18]

Para instaladores conhecidos que tentam substituir recursos protegidos pelo WRP, o erro de acesso negado e a mensagem de erro podem ser suprimidas. Neste caso, a operação retorna com sucesso, e o erro e a mensagem de erro são suprimidas, mas nenhuma mudança é aplicada ao recurso protegido pelo WRP. O erro pode ser suprimido para um instalador conhecido somente quando os critérios abaixo são satisfeitos [18]:

  • Esta é uma aplicação legada, não desenvolvida para Windows Vista ou Windows Server 2008.
  • A mensagem de acesso negado é causada somente ao tentar modificar um recurso protegido pelo WRP.
  • Um Administrador está instalando o aplicativo.

2.4 REVERTENDO A INSTALAÇÃO DE ATUALIZAÇÕES PENDENTES

Se você encontrar uma falha ao iniciar devido a instalação de uma atualização, você pode usar a opção /RevertPendingActions na opção “Reparar o computador” disponível através do DVD de instalação do Windows ou durante a iniciação (pressionando F8. No Windows 8, na tela de logon, pressione a tecla , clique no botão Desligar e escolha a opção Reiniciar) para tentar recuperar o sistema. A operação reverte todas as ações pendentes das operações de instalação anteriores por que estas ações podem estar causando a falha durante a iniciação. A opção /RevertPendingActions não é suportada enquanto o sistema está em execução (online). [2]

Você deve usar a opção /RevertPendingActions somente em um cenário de recuperação de um sistema em uma imagem do Windows que não está iniciando. [2]

falha_windows-png-482054860d22de9d7e0e84bcf592c004

dism /image:C:\ /cleanup-image /revertpendingactions

Caso o comando falhe, você pode tentar renomear o arquivo Pending.xml. Para fazer isso, execute o seguinte comando [27]:

Ren c:\windows\winsxs\pending.xml Pending

2.5 CORRIGINDO CORRUPÇÕES DO COMPONENT-BASED SERVICING

2.5.1 SFC

A Verificação de arquivos do sistema (SFC, abreviação de System File Checker) tem a missão de reparar arquivos de sistema ausentes, corrompidos ou substituídos por uma versão correta salva em cache. [14][15]

Ela sempre é executada em tempo real e em segundo plano através da Windows Resource Protection (WRP). Isso significa que, caso um programa venha a substituir um arquivo importante do Windows, o WRP restaura silenciosamente o hard linking do arquivo correto à partir da Component Store [22] (No Windows XP e anteriores, arquivos do sistema corrompidos eram substituídos à partir do diretório C:\Windows\system32\dllcache ou do CD de instalação do Windows. [21]).

No evento dos arquivos da Component Store corromperem, há um backup para aqueles arquivos marcados como críticos para a iniciação no diretório %windir%\winsxs\backup e é iniciada uma tentativa de recriar a Component Store através dos arquivos de sistema localizados no diretório %windir% e de reprojetar os arquivos do sistema. Se tanto os arquivos da Component Store e os arquivos de backup corromperem, então uma reinstalação seria o método recomendado de resolver este problema. [22] Porém, a Microsoft disponibilizou recentemente uma ferramenta chamada CheckSUR, que permite a restauração da Component Store sem a necessidade de reinstalar todo o sistema.

Para executar a verificação manualmente, abra o Prompt de Comando como Administrador e use o comando:

sfc /scannow

sfc

No Windows XP/Server 2003 e anteriores, será necessário possuir o CD de instalação do Windows. Em sistemas que não possuem leitor de CD/DVD, é possível copiar o conteúdo do CD de instalação para um diretório local e usá-lo. Para isso, abra o Editor de registro (Abra o Menu iniciar, e clique em Executar. Na caixa de diálogo, digite regedit e pressione ), expanda a sub-chave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup e modifique os valores SourcePath para o diretório local, Installation Sources para [diretório local]\i386 e CDInstall para 0. [25]

Um dos novos recursos do SFC introduzidos com o Windows Vista/Server 2008 é a habilidade de executar o SFC em uma instalação offline do Windows. [22] Este recurso é útil quando você não consegue iniciar o sistema e há suspeitas de corrupção de arquivos do sistema. Você pode executar o SFC em modo offline através da opção “Reparar o computador” disponível durante a iniciação (pressionando F8. No Windows 8, na tela de logon, pressione a tecla , clique no botão Desligar e escolha a opção Reiniciar) ou através do DVD de instalação do Windows usando o comando [22]:

sfc /scannow /offbootdir=c:\ /offwindir=c:\windows

Após o processo ter terminado, você poderá receber uma das mensagens abaixo [16]:

  • A Proteção de Recursos do Windows não encontrou nenhuma violação de integridade.

    Isso significa que você não possuí nenhum arquivo do sistema ausente ou corrompido.

  • A Proteção de Recursos do Windows não pôde executar a operação solicitada.

    Para resolver este problema, verifique se o estado do serviço Instalador de módulos do Windows (TrustedInstaller) não está desabilitado. Para fazer isso, pressione a combinação de teclas  +  e digite services.msc (o estado do serviço deverá estar definido como Manual). Você pode ainda verificar se os diretórios PendingDeletes PendingRenames existem em %windir%\winsxs\Temp e tentar executar o SFC em Modo de segurança.

  • A Proteção de Recursos do Windows encontrou arquivos corrompidos e os reparou com êxito. Detalhes incluídos no log %windir%\Logs\CBS\CBS.log.

    O diagnóstico final reportou que não encontrou violações de integridade, o sistema está OK.

  • A Proteção de Recursos do Windows encontrou arquivos corrompidos, mas não pôde corrigir alguns deles.

2.5.2 CheckSUR / RestoreHealth

O CheckSUR inicialmente foi criado para corrigir inconsistências na Component Store durante a instalação do Service Pack 1 para Windows 7 que, ao encontrar arquivos do sistema corrompidos ou faltantes, falhava ao instalar. Em tradução literal, Check System Update Readiness significa Verificação da Disposição do Sistema para instalar Atualizações.

Á partir do Windows 8, o DISM  substituiu o CheckSUR, tornando-o uma ferramenta integrada ao sistema operacional. [3] O DISM recebeu novas funções de limpeza e recuperação da Component Store, em especial o parâmetro RestoreHealth, que verifica o diretório de componentes por corrupções, registra a corrupção no arquivo de log C:\Windows\Logs\CBS\CBS.log e corrige a corrupção usando o Windows Update ou sua mídia de instalação do Windows. Esta operação leva aproximadamente 10-15 minutos ou mais, dependendo do nível de corrupção e a velocidade do seu computador.

O que o CheckSUR faz?

A ferramenta verifica a integridade dos seguintes recursos [3]:

  • Arquivos localizados nos seguintes diretórios:
    • %SYSTEMROOT%\Servicing\Packages
    • %SYSTEMROOT%\WinSxS\Manifests
  • Dados do registro localizados nas seguintes sub-chaves:
    • HKEY_LOCAL_MACHINE\Components
    • HKEY_LOCAL_MACHINE\Schema
    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing

Quando o CheckSUR detecta inconsistência em arquivos, arquivos de manifestos ou em dados do registro, ele pode corrigir os dados incorretos. [3]

2.5.2 CheckSUR (Windows Vista/7)

Windows LogoO CheckSUR (Check System Update Readiness) é uma ferramenta atualizada mensalmente pela Microsoft para Windows Vista/7 e pode ser encontrada para download na Central de Downloads da Microsoft.

O CheckSUR é distribuído como uma atualização normal mas, em si, é executado em segundo plano e pode levar horas sem exibir o progresso da verificação.

FQ-0000139-09-windows-update-kb958559-installation-status

A velocidade da verificação depende da velocidade do disco do sistema que você está executando a ferramenta. Isso por que o CheckSUR é executado como um pacote de atualização. Ele cria o diretório \Windows\CheckSUR no seu sistema e descompacta o conteúdo da ferramenta no seu disco rígido local antes sequer de executar a ferramenta. Este processo consome a maior parte do tempo (~75-80%). O restante do tempo é usado para executar a ferramenta e gerar o arquivo de log. Se você possuí um grande número de corrupções no sistema, como uma instalação falha de um Service Pack, então ele pode levar um pouco mais de tempo mas em geral a ferramenta deve terminar em aproximadamente 15 minutos. [13]

Se você precisar executar a ferramenta novamente no sistema, você será capaz de somente re-executar a ferramenta que você baixou (assumindo que você a salvou) e será muito mais rápido por que não será necessário reconstruir os diretórios em \Windows\CheckSUR e você poderá simplesmente executar a ferramenta. Os logs da ferramenta são recriados todas ás vezes que a ferramenta é executada então somente as entradas mais recentes estarão listadas no log. [13]

Caso você queira saber qual arquivo está sendo verificado ou suspeita que o CheckSUR não está sendo executado, você pode usar o Process Monitor e filtrar o processo por checksur.exe.

2.5.2 RestoreHealth (Windows 8 e superiores)

Windows 8 Logo

Para que possamos usar o parâmetro RestoreHealth do DISM, precisamos abrir o Prompt de comando como Administrador e executarmos o comando [1]:

dism /Online /Cleanup-Image /RestoreHealth

CMD_RestoreHealth

wininet_137Caso você receba o erro 0x80240021 ao executar o comando do DISM, execute o comando abaixo e tente executar o RestoreHealth novamente. [1]

dism /Online /Cleanup-Image /StartComponentCleanup

Como não especificamos o Source, o DISM obterá os arquivos para reparo do Windows Update. [2]

Assim como o SFC, o RestoreHealth pode ser executado offline. Este recurso é útil quando você não consegue iniciar o sistema e há suspeitas de corrupção de arquivos do sistema. Você pode executar o RestoreHealth em modo offline através da opção “Reparar o computador” disponível durante a iniciação (na tela de logon, pressione a tecla , clique no botão Desligar e escolha a opção Reiniciar) ou através do DVD de instalação do Windows usando o comando [22]:

dism /Image:C:\ /Cleanup-Image /RestoreHealth

Por padrão, o DISM obtém os arquivos para reparo do Windows Update. Porém, em alguns casos, podemos não ter acesso à internet disponível. Podemos reparar o Windows usando o DVD de instalação obtendo o índice da imagem de instalação usando o comando:

dism /Get-WIMInfo /WIMFile:D:\sources\install.wim

dism get-wiminfo

É normal aparecer apenas um item na lista. Poucos DVDs de instalação possuem mais que um item. Meu DVD de instalação possuí 2 versões: Home Premium e Pro do Windows 8.

Para repararmos o Windows localmente, use o comando [24]:

dism /Image:C:\ /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim:1

Você pode adicionar o parâmetro /LimitAccess ao final do comando para impedir que o DISM conecte-se a internet para obter os arquivos de instalação.

2.5.3 SFCFix

SFCFix é uma ferramenta desenvolvida para reparar automaticamente arquivos do sistema e inconsistências no registro pelo SFC e CheckSUR. O aplicativo em si é portátil e compatível com todas as versões recentes do Windows. [7]

O verdadeiro poder do SFCFix reside nos scripts de correção, que são montados após a análise do arquivo de log das ferramentas SFC e/ou CheckSUR/RestoreHealth às quais me referi acima.

Ele até pode corrigir de forma automática um sistema que o SFC e CheckSUR não conseguiram corrigir por possuir algumas correções já pré-definidas, mas nem tantas assim.

Ele pode ser encontrado no site MajorGeeks.

Durante a execução do SFCFix, responda y para permitir a ferramenta conectar-se ao site sysnative para obter novas correções e arquivos substitutos para arquivos do sistema corrompidos.

4d557a4ab13bf7937474b51989712e6d

Após a execução, o SFCFix salva na Área de trabalho um arquivo de log chamado SFCFix.txt com todas os erros encontradas e alterações realizadas no sistema.

SFCFix version 2.4.3.0 by niemiro.
Start time: 2015-05-23 13:45:36.907
Microsoft Windows 7 Service Pack 1 - amd64
Not using a script file.
AutoAnalysis::
FIXED: Corruption at C:\Windows\winsxs\amd64_microsoft-windows-u..ed-telemetry-client_31bf3856ad364e35_6.1.7601.18839_none_fe0845bb1d97efdautc.app.json has been successfully repaired from C:\Windows\winsxs\amd64_microsoft-windows-u..ed-telemetry-client_31bf3856ad364e35_6.1.7601.23040_none_fe7de82236c5fac8utc.app.json.
FIXED: Corruption at C:\Windows\winsxs\amd64_microsoft-windows-u..ed-telemetry-client_31bf3856ad364e35_6.1.7601.18839_none_fe0845bb1d97efdatelemetry.ASM-WindowsDefault.json has been successfully repaired from C:\Windows\winsxs\amd64_microsoft-windows-u..ed-telemetry-client_31bf3856ad364e35_6.1.7601.23040_none_fe7de82236c5fac8telemetry.ASM-WindowsDefault.json.
SUMMARY: All detected corruptions were successfully repaired.
AutoAnalysis:: directive completed successfully.
Successfully processed all directives.
SFCFix version 2.4.3.0 by niemiro has completed.
Currently storing 2 datablocks.
Finish time: 2015-05-23 13:49:57.049

2.5.4 Reparo Manual

Caso o SFC, CheckSUR/RestoreHealth e o SFCFix não possam reparar o erro automaticamente, precisaremos analisar os arquivos de log gerados por estas ferramentas para realizarmos o reparo manualmente.

Ainda que você possa visualizar os arquivos usando o Bloco de notas, dificilmente você encontrará alguma informação que faça sentido usando um editor de texto comum. Logs do Windows geralmente são fáceis de ler usando o CMTrace (que faz parte do Microsoft SCCM 2012 R2 Toolkit). Avisos são realçados em amarelo e erros em vermelho.

6

Analisando os logs do CheckSUR / RestoreHealth

Ambas são ferramenta de grande ajuda neste tipo de situação, pois além de tentar corrigir o problema, a ferramenta gera um arquivo de log de fácil interpretação, que sugere algumas ações a serem tomadas caso o problema não seja corrigido pela própria ferramenta.

Windows LogoNo Windows Vista/7, todos os logs da ferramenta são salvos no arquivo de log \Windows\Logs\CBS\CheckSUR.log [13]

Windows 8 Logo

No Windows 8 e superiores, o log da ferramenta são encontrados no diretório C:\Windows\Logs\CBS\CBS.log e C:\Windows\Logs\DISM\dism.log [1]

Para poder visualizar estes logs, você precisará copiá-lo das localizações acima para sua Área de trabalho, para então abri-los na sua Área de trabalho. [1]

Os passos a seguir tornam-se um pouco mais complicados por que todo mundo obtém resultados diferentes no arquivo de log.

Note a seção que diz “Checking Package Manifests and catalogs” (Checando Manifesto e catálogos de Pacotes) no arquivo de log. Se há algum erro, você verá uma linha iniciando com (f) seguida de um código de erro e um caminho de diretório. Se você ver um (fix) na próxima linha abaixo do (f), isso significa que a ferramenta conseguiu corrigir este erro em particular. [15]

checksur2

Logo após mostrar os arquivos que estão corrompidos (ou faltantes), o CheckSUR indica onde o componente pode ser encontrado (nas atualizações KB27576 e KB26858).

Analizando os logs do SFC

Executando o comando sfc /scannow produzirá o arquivo de log CBS.log (geralmente encontrado em C:\Windows\Logs\CBS) que contém muitas informações importantes. Há um comando que podemos usar para filtrar o arquivo de log da Component Store para mostrar somente as entradas relativas ao SFC [4]:

findstr /i /c:"[SR]" "%windir%\Logs\CBS\CBS.log" | findstr /i /v /c:"verify" >> "%userprofile%\Desktop\sfc.txt"

O comando acima irá [5]:

  1. Obter todas as linhas do arquivo CBS.log contendo [SR], que são as linhas que registram as tentativas de reparo.
  2. Remove todas as linhas contendo verify das linhas que obtemos no passo anterior com o objetivo de reduzir a desordem.
  3. Escreve os resultados no arquivo sfc.txt para análise.

Os passos a seguir tornam-se um pouco mais complicados por que todo mundo obtém resultados diferentes no arquivo de log.

O arquivo de log (sfc.txt) que estamos analisando possuí o seguinte conteúdo:

2014-02-19 17:23:00, Info CSI 00000975 [SR] Repairing 1 component
2014-02-19 17:23:00, Info CSI 0000097a [SR] Cannot repair member file [l:22{11}]"Generic.xbf" of Microsoft-Windows-Camera-LockScreenCamera-MediaShared, Version = 6.3.9600.16485, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral in the store, file is missing
2014-02-19 17:23:00, Info CSI 0000097b [SR] This component was referenced by [l:154{77}]"Package_1_for_KB2914218~31bf3856ad364e35~amd64~~6.3.1.3.2914218-1_neutral_GDR"
2014-02-19 17:23:00, Info CSI 00000980 [SR] Repair complete
2014-02-19 17:23:00, Info CSI 00000981 [SR] Committing transaction

Analisando o arquivo podemos ver que a Proteção de arquivos do Windows tentou reparar 3 componentes, mas falhou:

Cada linha possui as informações do arquivo que não pode ser reparado.

Cannot repair member file [...]"Generic.xbf"

O arquivo que precisa ser reparado.

Microsoft-Windows-Camera-LockScreenCamera-Main

Nome do componente que este arquivo faz parte.

Version = 6.3.9600.16485

Versão do arquivo.

pA = PROCESSOR_ARCHITECTURE_AMD64 (9)

Arquitetura do processador que o componente faz parte (64-bits).

Culture neutral

Idioma do componente. No caso, o componente é universal.

file is missing

Razão pela qual o arquivo precisa ser reparado (neste caso, o arquivo está faltando).

Logo após mostrar os arquivos que estão corrompidos (ou faltantes), o SFC indica onde o componente pode ser encontrado.

2014-02-19 17:23:00, Info CSI 0000097f [SR] This component was referenced by [l:154{77}]"Package_1_for_KB2914218~31bf3856ad364e35~amd64~~6.3.1.3.2914218-1_neutral_GDR"

Isso significa que os arquivos que faltam podem ser encontrados na atualização KB2914218.

Reparo Manual

Nota: Caso você não encontre a atualização para download, você pode obter o arquivo corrompido de outro computador ou extraindo o arquivo \sources\install.wim do DVD de instalação usando o 7-zip.

  1. Por padrão, apenas o Sistema pode acessar o diretório C:\Windows\winsxs. Para podermos restaurar o arquivo ao diretório, precisamos dar ao grupo Administradores permissão total ao diretório. Para isso, entre no diretório C:Windows. Dê botão direito no diretório WinSxS e selecione Propriedades. Entre na aba Segurança e clique no botão Editar…. Na lista, selecione Administradores e clique na caixa Controle Total. Obtendo permissões de diretório
  2. Realize o download da atualização KB2914218 no site da Microsoft.
  3. Extraia o arquivo *.msu utilizando o comando expand [28]:
    expand -F:* update.msu C:<target_dir>
    cd <target_dir>
    expand -F:* update.cab C:<target_dir>
    

    NOTA: Não extraia o arquivo *.msu usando o 7-Zip, WinRAR ou programas semelhantes. Ainda que o 7-zip consiga visualizar o conteúdo do arquivo *.msu, ao extrair o arquivo *.cab da atualização ele não expande os arquivos dentro do mesmo (os arquivos são extraídos em formato compactado).

  4. Abra o diretório onde você extraiu a atualização. Agora, precisamos usar as informações que o SFC nos passou para podermos encontrarmos o arquivo faltante. As duas informações são: Arquitetura e Nome do Componente (amd64 e Microsoft-Windows-Camera-LockScreenCamera-MediaShared, neste caso). Unindo os dois, obtemos amd64_Microsoft-Windows-Camera-LockScreenCamera-MediaShared. Procure pelo diretório que inicie com amd64_Microsoft-Windows-Camera-LockScreenCamera-MediaShared.
  5. Dentro deste diretório, terá o arquivo faltante (Generic.xbf). No diretório C:\Windows\winsxs, procure pelo diretório que incie com amd64_Microsoft-Windows-Camera-LockScreenCamera-MediaShared e restaure o arquivo faltante (Generic.xbf) copiando-o para o diretório.
  6. Execute o SFC novamente para certificar-se que os problemas foram corrigidos.

Conclusão

Um arquivo do sistema pode corromper por diversos motivos. A maioria dos problemas que encontrei relacionados a corrupção da Component Store são relacionados a setores defeituosos no disco rígido. Ás vezes alguma parte do registro ou algum arquivo do sistema acaba terminando em um setor defeituoso do disco. Isso acontece principalmente com o registro do Windows devido aos inúmeros acessos ao registro durante o dia-a-dia. Então certifique-se que o seu disco rígido está em bom estado, realize uma verificação por setores defeituosos (você pode realizá-la nas propriedades do disco em Meu computador).

54514

Após a verificação de setores defeituosos, o resultado estará disponível no visualizador de eventos do Windows. No final do log do chkdsk você encontrará quantos KB de setores defeituosos foram encontrados. Você irá querer encontrar “0 KB em Setores Defeituosos”. Se há qualquer valor diferente de 0, é hora de substituir seu disco rígido. Outra ferramenta que realiza esta verificação é o HDAT2, disponível no Ultimate Boot CD.

Ás vezes travamentos no sistema ou outros problemas podem ser devidos a memória RAM do computador e não estarem relacionados diretamente ao Windows. Você pode executar um teste de memória usando o MemTest86 para certificar-se desta possibilidade e, se for o caso, substituir a memória defeituosa.

A Microsoft disponibilizou um Fix It que repara o Windows Update automaticamente. Você pode baixá-lo em: http://support.microsoft.com/kb/971058 [14]

Outra ferramenta que fornece reparos automatizados do Windows Update, registro de DLLs, permissões do registro e inconsistências da Component Store do Windows 8 e superiores é a Windows Repair All-in-One.

Nas instruções dos artigos oficiais da Microsoft consta ainda como restaurar o Windows Update manualmente, o que inclui registro de DLLs, renomeação do arquivo pending.xml e do diretório SoftwareDistribution, entre outros procedimentos. Ele pode ser encontrado em: http://support.microsoft.com/kb/2509997/pt-br [14]


REFERÊNCIAS

  1. DISM – Fixing Component Store Corruption in Windows 8 – http://www.eightforums.com/tutorials/26512-dism-fixing-component-store-corruption-windows-8-a.html
  2. Operating System Package Servicing Command-Line Options – http://technet.microsoft.com/en-us/library/hh825265.aspx
  3. Deployment Image Servicing and Management (DISM.exe) – resque – http://resque.wordpress.com/2012/12/17/deployment-image-servicing-and-management-dism-exe
  4. Windows 8 – How to Repair Corrupt System Files from a Installation Disc – Super User – http://superuser.com/questions/718805/how-to-repair-corrupt-system-files-from-a-installation-disc
  5. How to fix errors found in the CheckSUR.log – Microsoft Support – http://support.microsoft.com/kb/2700601
  6. WinSxS Folder in Windows 10/8/7 explained – The Windows Club – http://www.thewindowsclub.com/winsxs-folder-windows-7-8
  7. SFCFix comes to the rescue when SFC /Scannow cannot repair Windows file corruption – gHacks Tech News – http://www.ghacks.net/2015/11/06/sfcfix-comes-to-the-rescue-when-sfc-scannow-cannot-repair-windows-file-corruption/
  8. What is the WINSXS directory in Windows 2008 and Windows Vista and why is it so large? – Ask the Core Team – Microsoft TechNet Blogs – https://blogs.technet.microsoft.com/askcore/2008/09/17/what-is-the-winsxs-directory-in-windows-2008-and-windows-vista-and-why-is-it-so-large/
  9. Disk Space – Engineering Windows 7 – MSDN Blogs – http://blogs.msdn.com/b/e7/archive/2008/11/19/disk-space.aspx
  10. Deploying Vista – Part 1: Understanding the Windows AIK – WindowsNetworking.com – http://www.windowsnetworking.com/articles-tutorials/windows-vista/Deploying-Vista-Understanding-Windows-AIK.html
  11. The WinSxS disaster in Windows 8/7/Vista due to Component Based Servicing – XP was my idea – http://xpwasmyidea.blogspot.com.br/2011/08/servicing-disaster-in-windows-vista-and.html
  12. Servicing via CBS (Component-Based Servicing) – Woo Yoo’s Blog – IIS Blogs – https://blogs.iis.net/wonyoo/servicing-via-cbs-component-based-servicing
  13. Why does CheckSUR take a long time to run? – The Windows Servicing Guy – Microsoft TechNet Blogs – https://blogs.technet.microsoft.com/joscon/2010/05/11/why-does-checksur-take-a-long-time-to-run/
  14. Resolvendo problemas na aplicação de Atualizações do Windows – Directory Services in Depth – https://dsindepth.com.br/2014/06/02/resolvendo-problemas-na-aplicacao-de-atualizacoes-do-windows/
  15. Fix for Blank or Empty Windows Features List in Vista and 7 – Raymond.CC – https://www.raymond.cc/blog/fix-blank-or-empty-list-in-vista-turn-windows-features-on-or-off-optionalfeaturesexe/
  16. Use the System File Checker to repair missing or corrupted system files – Microsoft Support – https://support.microsoft.com/en-us/kb/929833
  17. Windows Resource Protection – MSDN – https://msdn.microsoft.com/en-us/library/windows/desktop/aa382503(v=vs.85).aspx
  18. Supported Resource Replacement Mechanisms – Windows Resource Protection – MSDN – https://msdn.microsoft.com/en-us/library/windows/desktop/aa382540(v=vs.85).aspx
  19. System File Checker – Wikipedia – https://en.wikipedia.org/wiki/System_File_Checker
  20. Windows File Protection – Wikipedia – https://en.wikipedia.org/wiki/Windows_File_Protection
  21. Description of the Windows File Protection feature – Microsoft Support – https://support.microsoft.com/en-us/kb/222193
  22. Using System File Checker (SFC) to fix issues – Ask the Core Team – Microsoft TechNet Blogs – https://blogs.technet.microsoft.com/askcore/2007/12/18/using-system-file-checker-sfc-to-fix-issues/
  23. Erros de instalação do .NET Framework 3.5: 0x800F0906, 0x800F081F, 0x800F0907 – Suporte Microsoft – http://support.microsoft.com/kb/2734782
  24. Reparar uma imagem do Windows – MSDN – https://msdn.microsoft.com/pt-br/library/hh824869.aspx
  25. Change the source path for the install files in Windows NT – Smallvoid.com – http://smallvoid.com/article/winnt-source-path-install.html
  26. Fix Windows Update errors by using the DISM or System Update Readiness tool – Microsoft Support – https://support.microsoft.com/en-us/help/947821/fix-windows-update-errors-by-using-the-dism-or-system-update-readiness-tool
  27. Você não pode instalar atualizações em um computador baseado no Windows – Suporte Microsoft – https://support.microsoft.com/pt-br/help/2509997/you-can-t-install-updates-on-a-windows-based-computer
  28. How to extract msu/msp/msi/exe files from the command line – WindowsWiki – http://www.windowswiki.info/2009/02/19/how-to-extract-msumspmsiexe-files-from-the-command-line/

ANEXOS

Anexo A: Códigos de erros da Component-Based Store

Abaixo há uma tabela com erros comuns que a Component Store pode apresentar. [3][23][26] Infelizmente, nem todos são reparáveis por ferramentas, sendo necessário reparo manual ou reinstalação do sistema em alguns casos.

Código Erro Descrição
0x80070002 ERROR_FILE_NOT_FOUND O sistema não pôde encontrar o arquivo especificado.
0x8007000D ERROR_INVALID_DATA O conteúdo é inválido.
0x800F081F CBS_E_SOURCE_MISSING A origem para o pacote ou arquivo não foi encontrada.
0x80073712 ERROR_SXS_COMPONENT_STORE_CORRUPT A componente store está inconsistente.
0x800736CC ERROR_SXS_FILE_HASH_MISMATCH Um arquivo de componente não corresponde a informação de verificação presente no manifesto do componente.
0x800705B9 ERROR_XML_PARSE_ERROR Falha ao processar as informações XML requisitadas.
0x80070246 ERROR_ILLEGAL_CHARACTER Um caractere inválido foi encontrado.
0x8007370D ERROR_SXS_IDENTITY_PARSE_ERROR A identificação da atualização é inválida.
0x8007370B ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME O nome de um atributo da atualização é inválido.
0x8007370A ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE O valor de um atributo de identificação é inválido.
0x80070057 ERROR_INVALID_PARAMETER O parâmetro está incorreto.
0x800B0100 TRUST_E_NOSIGNATURE Arquivo não assinado.
0x80092003 CRYPT_E_FILE_ERROR Um erro ocorreu enquanto o Windows Update lia ou escrevia para um arquivo.
0x800B0101 CERT_E_EXPIRED Um certificado necessário não está dentro do período de validade em relação ao horário do sistema ou pela data do arquivo assinado digitalmente.
0x8007371B ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE Um ou mais membros necessários da transação não estão presentes.
0x80070490 ERROR_NOT_FOUND Windows não pôde procurar por novas atualizações.
Anúncios

2 comentários sobre “Reparando uma instalação do Windows usando SFC e CheckSUR/RestoreHealth

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s