quarta-feira, 29 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.

Fonte: www.jefferson-ryan.blogspot.com

Nenhum comentário: