Solucionando Problemas no Registro do Windows


Solucionando Problemas no Registro do Windows

Por: Yuri Diógenes

1. Introdução

No artigo passado que escrevi vimos algumas técnicas para solucionar problemas de boot no Windows. Iniciamos uma discussão acerca de que problemas no registro também podem afetar a inicialização do Windows. Neste artigo iremos abordar especificamente alguns destes problemas, inclusive citar exemplos práticos sobre o assunto.

2. Estrutura do registro

O registro é um banco de dados hierárquico que contém valores de variáveis do Windows e também valores para aplicações e serviços instalados no Windows. A forma do registro em si parece muito com uma estrutura de disco, onde temos uma pasta (que neste caso seria similar a uma chave) e valores (que seriam similares a arquivos), as pastas por sua vez poderiam ter subpastas (neste caso subchaves). Assim como os arquivos, os valores armazenam dados que são usados ou pelo sistema operacional ou pela aplicação / serviço em específico, esses valores por sua vez tem um determinado tipo que estabelece como o valor deve ser preenchido.

Para uma listagem completa dos tipos de valores que existem no registro, assim como as principais chaves vejam o artigo abaixo:

Descrição do Registro do Microsoft Windows

https://support.microsoft.com/kb/256986/pt-br

Os arquivos usados pelo registro estão contidos em %SystemRoot%\System32\Config, exceto para a hive HKEY_CURRENT_USER que por sua vez está localizado na pasta unidade:\Documents and Settings\%Username% . A chave de registro tem um vinculo direto com um arquivo na pasta Config, este arquivo por sua vez não tem extensão, como por exemplo: a hive HKEY _LOCAL_MACHINE\SYSTEM tem um arquivo chamado SYSTEM (sem extensão). Além deste arquivo, temos também:

· Arquivo .ALT – uma cópia de backup da hive HKEY_LOCAL_MACHINE\SYSTEM (o Windows 2003 não tem este arquivo);

· .LOG – um log de transação das mudanças nas chaves e os valores das hives;

· .SAV – cópia da hive feita logo após o fim do modo texto do setup do Windows.

3. Possíveis causas para corrupção no registro

Dizer a causa raiz de uma corrupção de registro pode ser uma tarefa árdua e muitas vezes até improvável que aconteça com 100% de certeza. Isso porque existem diversos fatores que podem causar essa corrupção. Porém é possível citar os principais motivos que podem levar a uma corrupção de registro, vejamos alguns:

· Falta de energia: esse talvez seja um dos mais graves, isso porque nunca sabemos o que o sistema operacional estava fazendo exatamente antes da energia faltar. O fato é que se o sistema operacional estiver fazendo uma modificação que afete principalmente a SYSTEM hive, isso pode causar uma corrupção. Geralmente é fácil de verificar o histórico de paradas inesperadas, basta revisar os logs de sistema e procurar pelo evento 6008, este evento basicamente mostra que o servidor não foi corretamente desligado. Apesar de que aqui não estou afirmando que sempre que houver 6008 vai significar que o registro está corrompido, já vi casos de vários eventos desta natureza em um servidor e nada de errado ocorria nele. Porém, é importante frízar que a falta de energia que leva a uma parada inesperada é a causa da maioria das corrupções de registro;

· Corrupção no sistema de arquivos: um problema de mais baixo nível no sistema de arquivos pode gerar uma corrupção no registro. É importante checar se o problema é apenas no disco ou se também existem problemas na controladora de disco, no processador, no cache, na memória ou até mesmo no processador.

4. Quando é que eu sei que o registro está corrompido?

Bem, essa é uma pergunta cuja resposta não é muito agradável, na realidade a corrupção de registro geralmente só é manifestada durante a inicialização do Windows, e na grande maioria das vezes vem em formato de erro de tela azul ou uma parada na carga do Windows dizendo que não foi possível fazer a leitura de uma determinada “hive” (geralmente a SYSTEM Hive).

Os erros mais comuns durante a carga do Windows relacionados à corrupção de registro são:

· 1 - Paradas de Tela Azul

  • Stop 0xc0000218 - UNKNOWN_HARD_ERROR
  • Stop: 0xc0000218 {Registry File Failure}
  • The registry cannot load the hive (file): \SystemRoot\System32\Config\SYSTEM or its log or alternate - It is corrupt, absent, or not writable.
  • Stop 0xc0000218 - STATUS_CANNOT_LOAD_REGISTRY_FILE
  • STOP 0x00000051
  • Windows could not start because the following file is missing or corrupt :\%SYSTEMROOT%\SYSTEM32\CONFIG\SYSTEM
  • Windows could not start because the following file is missing or corrupt :\%SYSTEMROOT%\SYSTEM32\CONFIG\SOFTWARE

· 2 - Paradas na tela preta durante a carga do Windows

  • Windows could not start because the following file is missing or corrupt :\%SYSTEMROOT%\SYSTEM32\CONFIG\SYSTEM.ced
  • Windows could not start because of an error in the software. Please report this problem as Loader Error 3
  • C:\winnt\system32\config\system.CED is missing or corrupt … System hive error

Existem diferenças entre estes dois tipos de erros, os erros do tipo 1 podem ser atribuídos a falta do arquivo na pasta %SystemRoot%\System32\Config ou uma corrupção propriamente dita. No caso dos erros de tipo 2, eles podem ser devido a uma corrupção propriamente dita ou quando a chave de registro é muito grande e apresenta uma fragmentação. Os erros de tipo 2 são mais comuns no Windows 2000 devido há haver uma limitação no tamanho da System Hive de 10.3MB, que por sua vez foi modificada no Windows 2003 (Mais informações ver artigo 302594). Neste caso não é preciso reparar a chave e sim compactá-la.

5. Diretrizes para resolução de problemas de registro

Se chegarmos ao cenário em que a chave está corrompida então podemos usar os passos a seguir nesta ordem, pois trata-se de uma ordem onde as medidas menos drásticas são usadas primeiramente:

1) Usar a opção Last Known Good para tentar reverter uma possível operação de adição ou atualização de driver que porventura pode ter causado tal comportamento;

2) Uma alternativa neste momento é usar a Recovery Console, através dela será possível realizar os seguintes procedimentos:

a. Copiar a hive que apresentou problema, neste caso é preciso que se tenha um backup da mesma em disco flexível / CD;

b. Executar o chkdsk para tentar fazer algum reparo no sistema de arquivos tendo em vista que isso também pode ter sido a causa raiz do problema;

c. Se você tiver uma rotina de backup onde o system state é copiado, então na pasta %systemroot%\repair\ haverá uma copia da SYSTEM hive, você poderá usar esta cópia para trazer de volta a última versão desta hive. Para isso use o comando:

copy c:\winnt\repair\system c:\winnt\system32\config\SYSTEM

Maiores detalhes ver artigos: 269075 e 325375.

3) Em caso de não sucesso na execução das opções acima a outra alternativa seria fazer uma instalação paralela do Windows (ver artigo 266465). Tendo uma instalação paralela no servidor é possível fazer ter acesso aos arquivos contidos na partição original, na pasta System32\Config. Tendo acesso a estes arquivos você pode abrir o editor de registro (RegEdit) e usar a opção “Load Hive” para ler a hive com problema (como dito antes, na maioria das vezes a SYSTEM). No Windows XP e Windows 2003 SP1 quando se faz a carga de uma hive usando o regedit, o sistema operacional usa um procedimento chamado de “Self-Heal” para fazer um auto reparo na chave. Após fazer este auto-reparo apenas tente reiniciar o computador pela partição original e em alguns casos (depende do quão corrompido está a hive) isso já resolve o problema;

4) Se você não tiver sucesso neste procedimento, aproveite esta instalação paralela e use o utilitário CHKREG para tentar reparar a hive. Este utilitário pode ser baixado via artigo 830570. Execute o comando chkreg /R [caminho da system hive] para fazer a reparação da

chave.

5) Por último, temos a opção de restaurar o System State, que por sua vez vai trazer de volta a chave de registro considerada não corrompida. Em alguns cenários não se deseja restaurar todo o System State, neste caso é possível restaurar o System State para uma pasta temporária e então apenas copiar a SYSTEM hive para o local de origem. Ver mais detalhes sobre este procedimento no artigo abaixo 309340.

Não se deseja, mas infelizmente às vezes acontece justamente de você não ter tantas opções disponíveis assim, por exemplo: já trabalhei em um caso que o cliente não tinha backup, não tinha espaço em disco para uma instalação paralela e não tinha a senha do administrador para entrar na Recovery Console. Você pode pensar agora: “mais que azar hein!!”, verdade, mas infelizmente acontece. Bem neste caso ainda é possível ter acesso a SYSTEM Hive, para isso é preciso que você efetue o boot usando o CD do Windows PE para ter acesso ao disco. Para mais informações sobre esta tecnologia acesse o “white paper” abaixo:

Windows Preinstallation Environment Technical Overview

https://www.microsoft.com/whdc/system/winpreinst/windowspe_tech.mspx

Caso o cenário seja mais parecido com os problemas do tipo 2, que conforme havia mencionado acontecem mais comumente no Windows 2000, então temos dois procedimentos adicionais que podem ser realizados no caso do problema ser relacionado a fragmentação no registro. São eles:

1) Use o utilitário CHKREG para compactar a hive. Este utilitário pode ser baixado do link a seguir:

https://support.microsoft.com/kb/830570/en-us

    

     Execute o comando chkreg /F [caminho da system hive] para fazer a reparação da

chave.

2) Uma outra opção é usar o utilitário PageDefrag da Sysinternals. Este utilitário vai fazer uma checagem das hives que estão fragmentadas e usar API’s de desfragmentação do Windows. Você pode baixar e ler mais sobre este utilitário no link abaixo:

https://www.sysinternals.com/utilities/pagedefrag.html

6. Conclusão

Bem, com este artigo fechamos um ciclo de artigos dedicados a parte de resolução de problemas durante a inicialização do Windows, seja ela por problemas de tela azul, arquivos do sistema ou registro. Abaixo tem o link para os artigos anteriores:

Desvendando a Famosa Tela Azul

https://blogs.technet.com/latam/archive/2006/03/10/423416.aspx

Problemas de Inicialização do Windows

https://blogs.technet.com/latam/archive/2006/03/31/423768.aspx

Essa área de inicialização, solução de problemas de registro e termos afins esta mudando bastante no Windows Vista e Longhorn, fiquem atentos as novidades que vem por aí com tais plataformas....