Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
26/05/1997

< Reconstituindo o Registro >


Semana passada vimos que o Registro é montado dinamicamente a partir dos arquivos System.Dat e User.Dat cada vez que Windows 95 é inicializado. Portanto, sem tais arquivos não é possível montar o Registro. Uma situação inaceitável. Tão inaceitável que Windows 95 faz tudo o que está a seu alcance para que ela jamais ocorra.

A melhor forma de consegui-lo é manter cópias de segurança dos arquivos. Se um deles faltar, usa-se a cópia e temos conversado. Uma solução perfeita não fosse por uma razão: o Registro é uma coisa dinâmica, que muda sempre que se adiciona ou remove um item de hardware ou software ou se altera um aspecto qualquer da configuração do sistema. Portanto o problema não é guardar a cópia, mas mantê-la atualizada. Para contorná-lo Windows 95 adotou uma solução que se não é a ideal, é bastante proxima dela: cada vez que é inicializado com sucesso - o que significa que ambos os arquivos estão em bom estado - o sistema armazena no diretório Windows uma cópia de cada um, com o mesmo nome e a extensão Da0. Se, na próxima tentativa de inicialização, um dos arquivos estiver corrompido, Windows 95 automaticamente usa a cópia para reconstitui-lo. Com isto perde-se apenas as alterações efetuadas no Registro durante a última sessão de trabalho, mas como provavelmente foram elas que causaram o problema, não se perde grande coisa.

Em sua busca pela segurança Windows 95 foi ainda mais radical e escondeu no diretório raiz do drive C o arquivo System.1st, uma cópia garantidamente funcional de System.Dat, o mais importante dos dois arquivos (o User.Dat guarda apenas os dados do usuário e pode sempre ser criado "do nada" em uma configuração genérica default). Windows pode atestar a funcionalidade de System.1st porque ele é uma cópia do arquivo System.Dat criado imediatamente após a instalação original de Windows. Um arquivo funcional mas absurdamente desatualizado, evidentemente. Portanto, só se deve recorrer a ele em casos extremos: o sistema apenas adota o remédio heróico de criar um Registro inteiro a partir de System.1st e das configurações de um hipotético usuario padrão no caso de falharem todas as tentativas de restaurar System.Dat e User.Dat a partir de suas cópias com extensão Da0. É claro que isto deita a perder todas as alterações efetuadas no Registro desde a instalação e todas as preferências do usuário, mas é melhor que nada: pelo menos a máquina funciona.

Neste ponto você já percebeu que reconstituir o Registro a partir dos arquivos Da0 e refazê-lo inteiro usando apenas o System.1st são as duas primeiras providências a que me referi no final da coluna da semana passada. Agora só falta a terceira: dar ao usuário meios de recriar o registro a partir de uma cópia feita por ele mesmo. O que é relativamente fácil e pode ser feito pelo menos de duas formas que logo discutiremos.

Antes, porém, uma observação. Desde que publiquei aqui no caderninho e em minha página pessoal (http://bpiropo.home.ml.org) uma dica sugerindo um meio de criar uma cópia de segurança do Registro e restaurá-lo a partir dela, desaconselhando usar as cópias System.Da0 e User.Da0 para este fim, recebi diversas mensagens de leitores informando que este último método funciona perfeitamente e não há porque evitá-lo (aliás, tantas foram as mensagens geradas por aquela dica, evidenciando um interesse tão grande pelo Registro, que me levaram a iniciar esta série). Acontece que funcionar, de fato funciona. Mas a Microsoft desaconselha e eu também. As razões da MS não sei quais são, mas sei bem quais são as minhas: os usuários de computadores, particularmente quando diante de um problema, muitas vezes desmentem os compêndios de história natural que classificam o homem como um animal racional e somente apelam para a racionalidade em última instância. Então, ao constatarem que há algo errado com o Registro, a primeira coisa que fazem é tentar novo boot. E mais um ou dois, só para ter certeza que o problema perdura. Ora, os arquivos System.Dat e User.Dat podem estar corrompidos, mas não a ponto de impedirem o boot. Como cada vez que a máquina é inicializada o sistema computa um boot bem sucedido, as cópias do System.Dat e User.Dat vão sendo criadas a partir de arquivos inadequados. O resultado, evidentemente, é reconstituir sempre os mesmos arquivos "bichados". Por isto recomendo reconstituir o Registro apenas a partir de uma cópia criada especificamente para isto. Mas, para dirimir dúvidas: dar um boot pelo DOS e copiar os arquivos User.Da0 e System.Da0 no diretório Windows com os nomes User.Dat e System.Dat funciona, sim: no próximo boot um novo Registro será criado. O problema é que nem sempre ele é funcional, pois depende do estado dos arquivos Da0. Por outro lado, reconstituir o Registro a partir de uma cópia de segurança criada quando a máquina estava estável e tudo corria bem, pode apostar: irá funcionar sempre.

B. Piropo