-->

quinta-feira, 16 de abril de 2009

Recuperando-se de desastres no Registro do Windows.

Nota: O método descrito a seguir foi o que usei inicialmente para me recuperar do dano ao meu Windows descrito neste post, que envolveu um erro STOP : C000021a com status de 0xC0000022. Eu já testei um método ainda melhor e mais preciso, que vou descrever em outro post.


O Registro do Windows, como vemos pelo Regedit, é uma representação em memória do conteúdo de um ou mais arquivos, que tem essa finalidade exclusiva.

No Windows 2000 e XP esses arquivos ficam armazenados em:

%windir%\system32\config\

No momento em que a instalação ou reinstalação do Windows é concluída o programa de instalação faz uma cópia-base desses arquivos em:

%windir%\repair\

Essa cópia tem o estado do seu Registro com todo o software e hardware que o Windows pôde instalar sozinho. E a melhor parte é que o hardware está bem separado do software. São dois arquivos: SYSTEM e SOFTWARE (sem extensão).

Edit: Esses arquivos que contém seções do Registro são chamados de "hives".

O arquivo %windir%\system32\config\SYSTEM tem todo o conteúdo da chave HKLM\SYSTEM do Registro, com todos os drivers e serviços instalados e não muito mais que isso. Se você substituir a cópia em "config" pelo backup em "repair", seu Windows volta, do ponto de vista da instalação do hardware, ao estado em que estava quando o Windows foi instalado.

Nota: Você não precisa e nem deve mexer com o arquivo SOFTWARE a não ser que você queira reverter o Registro totalmente para o estado em que estava na instalação, perdendo toda a configuração do software instalado.

Problemas dessa solução:
  • Qualquer driver que foi instalado após a instalação do Windows terá que ser reinstalado. Isso inclui hardware virtual como o Daemon tools e o CPUIdle;
  • Qualquer software que instale um serviço (como o Cobian Backup e todos os programas antivirus e de firewall) terá que ser reinstalado. Uma exceção possivelmente é o maldito GBplugin, cujo módulo não-serviço irá detectar o que está faltando e reinstalar silenciosamente (eu não testei).
  • Alguns raros programas podem não gostar, mesmo não requerendo drivers nem serviços. Eu só tive problemas com o Delphi 5 e o Delphi 7 e ainda assim com controles de terceiros específicos.
Não é possível fazer isso com o Windows rodando, mas se vai apelar para essa solução você provavelmente nem está conseguindo mesmo entrar no Windows, porém existem várias alternativas:
  • Usar o Console de Recuperação do XP;
  • Usar o prompt de comando no DVD do Vista;
  • Usar um LiveCD qualquer que tenha a capacidade de escrever na sua partição. Todos, se sua partição for FAT32, mas só alguns recentes se sua partição for NTFS.
  • Colocar o HDD como escravo em outro PC;
  • Instalar outra cópia do Windows em um HDD secundário no mesmo PC;
  • etc.
O meu procedimento no console de recuperação é o seguinte:



Note que a primeira coisa que fiz foi fazer um backup do arquivo SYSTEM defeituoso. Nunca esqueça de fazer um, porque ele vai fazer muita falta depois se algo der errado.

Após reiniciar você já deverá poder entrar normalmente no Windows. Consulte o Gerenciador de Dispositivos para ver o que falta reinstalar. Daemon Tools e CPUIdle reclamam na hora.


Windows 9X

A mesma técnica pode ser usada no Windows 9x, com algumas diferenças. Primeiro, os arquivos do Registro são esses dois:

%windir%\system.dat
%windir%\user.dat

Muitos programas ao se instalarem fazem cópias de backup do Registro mudando apenas a extensão. Por exemplo:

Coreldraw
%windir%\system.cor
%windir%\user.cor

Norton Utilities
%windir%\system.nu
%windir%\user.nu

Edit: A cada inicialização bem sucedida o Windows 9x faz o seu próprio backup de user.dat e system.dat, mas não me lembro agora se a extensão que ele coloca é .old ou .bak.

É por essas cópias que você deve procurar primeiro, por serem mais recentes. No prompt do DOS em %windir% eu faço assim:

attrib -h -r -s user.*
attrib -h -r -s system.*

dir system.*
dir user.*

Mas cuidado para não confundir backups de system.ini (sempre menores que 64KB) com os de system.dat (sempre bem maiores).

O Windows 9x também faz uma cópia ao terminar a instalação, mas apenas do arquivo System.dat. Essa cópia fica oculta como %systemdrive%\system.1st ("1st" significa "primeiro"). Eu cansei de consertar instalações do Windows 9x realmente bagunçadas simplesmente colocando esse arquivo no lugar de system.dat e reinstalando os drivers.

9 comentários:

  1. Bela dica! Um adendo bacana é voce lembrar de fazer uma copia dessas com todo o seu software instalado e funcionando perfeitamente, pra depois nao ter que instalar 1003 drivers de novo como eu :oP

    ResponderExcluir
  2. Seus conhecimentos de Windows sempre me surpreendem. Quando eu usava o Windows 95 e o Linux até sabia de alguns "segredos". No linux, com seus arquivos de configuração em formato de texto comentado sempre foi pra mim o mais fácil de mexer.

    Mas depois que comecei a usar o Windows XP, passei a usar o sistema como "usuário comum". Não sei se eu que parei de ler materiais de referência, ou se as minhas fontes secaram (nem me lembro mais de onde eu tirava informações sobre o Windows 95, mas acho que antigamente os textos de ajuda eram mais técnicos), só sei que, se não fosse pelo seu blog, eu nunca saberia que existe esse backup das configurações no Windows...

    Aliás, até pouco tempo atrás, eu achava que o registro do Windows XP também ficava em system.dat e user.dat...

    O que você consulta pra aprender tanto? MSDN?

    ResponderExcluir
  3. O Windows 9x também tinha o system.da0 e user.da0. Acho que esses eram os backups.

    ResponderExcluir
  4. Olá. Não pude deixar de notar esse post e a solução implementada.

    Ainda tem como recuperar todas as opções do sistema.

    Dentro da unidade com o Windows instalado (normalmente c:\) tem uma pasta chamada "system volume information" e dentro dela tem outra pasta chamada "snapshot". Os antigos pontos de restauração do sistema estão lá, inclusive os arquivos de configuração (security, system, sam, software, user e default).

    Para exibir a pasta você tem de desativar a opção "ocultar arquivos protegidos do sistema" (em ferramentas > opções de pasta...) e depois permitir controle total para o administrador.

    ResponderExcluir
  5. Jorge,

    Obrigado pela contribuição. Mas quero lembrar que isso não era opção viável para mim, já que a Recuperação do Sistema é desativada em todas as minhas máquinas.

    Para quem *usa* a Recuperação, usar esses arquivos em System Volume Information é realmente melhor do que os da pasta Repair.

    ResponderExcluir
  6. Olá Jefferson,

    "... a Recuperação do Sistema é desativada em todas as minhas máquinas..."

    Qual são as vantagens e desvantagens disto?

    ResponderExcluir
  7. "Qual são as vantagens e desvantagens disto?"

    Isso seria melhor respondido com um post, mas posso resumir no seguinte:

    1)Me incomoda a demora que a Recuperação provoca em diversas operações;
    2)Eu consigo consertar minhas máquinas sem precisar dela. Jamais desligaria na máquina de um cliente.

    ResponderExcluir
  8. Essas dicas foram ótimas.Eu estava "comendo uma rapadura preta" com umas maquinas de lanhouse e graças as suas dicas consegui "descascar uns bons abacaxis".Obrigado pelo excelente material!

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.