-->

terça-feira, 26 de maio de 2009

Como editar "offline" o Registro do Windows.

Neste texto eu assumo que você já leu meu texto anterior Recuperando-se de desastres no Registro do Windows e está familiarizado com todos os termos e conceitos que abordei nele. Esta é a Segunda Parte.

O que eu vou explicar aqui é algo poderoso. Se você é um power user ou técnico de manutenção, precisa saber pelo menos que isso é possível. Com essa técnica muitas instalações do Windows tidas como irrecuperáveis "porque você não consegue nem entrar no Windows" podem ser salvas em minutos com uma precisão maior (você nem precisará reinstalar drivers) do que a explicada na Primeira Parte deste texto. Agora eu vou mostrar apenas a técnica sem ensinar a resolver nenhum problema específico, mas em futuros textos eu vou mostrar problemas "de arrancar os cabelos" que são facilmente resolvidos com este método.

Eu não "inventei" isto aqui, como ficará óbvio logo no início da explicação. Diversos textos de suporte da Microsoft usam este método. Mas se você não estiver familiarizado pode ler o texto uma, duas, diversas vezes e não conseguir entender o que danado o autor está tentando explicar. Aqui eu tento dar a base necessária para isso.

------------------------------




Editar o Registro "offline" é editar o Registro de uma instalação do Windows que não está sendo usada. Existem diversos programas que se propõem a fazer isso, mas hoje eu só vou falar do meu método preferido, que é usar o próprio regedit.exe.

1) Abra o regedit e selecione HKLM
2) Arquivo -> Carregar Seção (Load Hive)

Nota: Além de HKLM a única chave root que permite carregar um hive é HKU. As outras não permitem porque são "virtuais" (apenas atalhos para outras chaves em HKLM e HKU).

3) Procure pelo arquivo que contém o hive que você quer examinar ou editar. Pode ser até um arquivo isolado trazido em um pendrive. No exemplo, vou carregar o hive System:

Notas:

  • Perceba a inconsistência. O diálogo chama de "ramificação" o que o menu chama de "seção". Eu prefiro "hive" mesmo;
  • O hive Software também pode ser carregado desta maneira e isso tem uma certa utilidade na hora de caçar vírus. Mas neste texto eu vou dar ênfase ao hive System porque é nele que se concentram os problemas que causam BSODs (provocados por vírus ou não) e te impedem de entrar no Windows.
4) O Regedit pede um nome para a chave que vai ser criada para conter esse hive. Pode ser qualquer coisa, mas eu vou tentar padronizar todos os meus textos com "temp_remover":

Hive carregado. Perceba como sua estrutura é parecida (mas nunca poderá ser igual) com a da chave SYSTEM:


Nesse ponto você já pode explorar o hive e fazer edições manuais sem qualquer problema.

Quando tiver terminado, descarregue o hive:

A parte intuitiva termina aqui. A partir de agora você precisa prestar atenção ao que vou explicar e certificar-se de que entendeu alguns conceitos importantes, ou você poderá tanto se frustrar (nada que você fizer funcionará) quanto bagunçar o Registro do Windows que você está usando como suporte.


Faça um backup antes

O que você vai fazer pode ficar bastante confuso. Sempre existe o risco de por bobeira você piorar as coisas. Se isso acontecer você vai querer ter feito um backup de todos os arquivos de hive (não apenas o que você está editando) da instalação defeituosa, para poder recomeçar do início.


Arquivos .reg precisam ser especialmente preparados

Primeiro, uma ótima notícia: Você pode carregar várias modificações automaticamente no hive clicando duas vezes em um arquivo .reg. A má notícia (que nem é tão má assim) é que você não pode utilizar um arquivo .reg "normal" destinado a uma instalação "viva" do Windows. Por exemplo, uma modificação a se fazer em ControlSet001 normalmente começa assim:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001]

Mas o hive que queremos modificar está carregado sob outra chave. Se quisermos fazer uma modificação em ControlSet001 desse hive a linha acima precisa ser mudada para:

[HKEY_LOCAL_MACHINE\temp_remover\ControlSet001]

Isso não é nenhum problema, desde que você saiba que precisa ser feito. Até mesmo no notepad você pode mandar substituir todas as ocorrências de "MACHINE\SYSTEM\" por "MACHINE\temp_remover\" e salvar um novo arquivo .reg pronto para ser carregado.

Notas:
  • O notepad serve, mas não é otimizado para longas substituições. Isso pode demorar um bocado se o arquivo for grande, mas funciona, é confiável e está disponível onde outros editores não estão;
  • Nunca caia na besteira de por preguiça substituir apenas "SYSTEM" ou "\SYSTEM\". Quanto mais longa a string de referência, mais difícil é você substituir a string errada em algum lugar.

CurrentControlSet não existe e nem pode existir

Meu texto "O Papel dos ControlSets no Registro" é leitura essencial agora (você finalmente sabe por que eu escrevi aquilo, não é?). Como você pode ver na penúltima figura acima, a chave CurrentControlSet não aparece sob temp_remover, porque ela não existe fisicamente no arquivo. Qualquer arquivo .reg que você precise importar no hive precisa ser analisado e qualquer referência à chave CurrentControlSet precisa ser renomeada para o ControlSet apropriado.

Por exemplo, se "current" tiver o valor "1" (você leu meu texto com atenção, não leu?), todas as ocorrências de "CurrentControlSet" precisam ser renomeadas para "ControlSet001". A mesma lógica se aplica a edições manuais.

Falhe em observar essa exigência e além de não resolver seu problema ainda vai ganhar mais um erro BSOD/STOP para resolver.

Se você abrir um hive SYSTEM para edição offline e encontrar a chave CurrentControlSet, pode apagá-la sem medo, porque ela não deveria estar ali e pode ser a causa dos seus problemas.

Cuidado para não apagar chaves "extras" que podem ser necessárias para a operação de algum software no outro sistema. Você pode até fazer isso se desconfiar que justamente essa chave extra é responsável pelos seus problemas, mas faça um backup do hive antes.


Tirando o máximo proveito disso

O modo mais óbvio de efetuar esse trabalho é trazer os hives do Windows problemático para uma máquina sadia, seja por cópia num pendrive ou conectando o HDD inteiro como escravo/secundário, mas isso requer outro PC. Se você se lembra de minhas dicas anteriores, sabe que existem outros modos de se ter acesso ao Regedit ainda na máquina problemática. Por exemplo, usando o Console de Recuperação do Vista você pode consertar o Registro defeituoso (mesmo do XP ou Windows 2000) sem precisar de outro PC. O mesmo vale para qualquer liveCD que carregue uma versão simplificada do Windows, como os WinPE/BartPE.

Por incrível que pareça você pode até usar o o estranho prompt SHIFT+10 do windows em alguns casos bem específicos (Sim, aquilo tem utilidade. Eu já usei.).

Aguardem outros textos meus dando exemplos de solução de problemas com esta técnica.

14 comentários:

  1. Muito interessante, mesmo! Há algumas semanas eu quis importar algumas configurações de registro de uma instalação anterior do Windows e não pude porque não sabia que era possível abri-lo no regedit da instalação atual. Muito bom saber!

    ResponderExcluir
  2. Pois é. Nesse caso são outros passos:

    1)Abrir o hive anterior para edição offline;
    2)Exportar os dados relevantes para arquivo;
    3)Editar o arquivo, substituindo "temp_remover" pelos caminhos "normais";
    4)Importar o arquivo;

    ResponderExcluir
  3. O livecd ubcd4win tem um editor de registro remoto.
    Já usei.
    Funciona.

    ResponderExcluir
  4. Já usei isso mais algumas vezes em máquinas onde o Windows faz logof automático logo após iniciar.
    Com esse método, usando um LiveCD, conserto o erro na chave que chama a Userinit.exe no registro defeituoso do PC...

    ResponderExcluir
  5. Uma dúvida: aonde fica o arquivo com o registro do Windows Vista, do meu outro HD? Estou usando o Windows 7 e não acho nenhum arquivo .reg.

    ResponderExcluir
  6. Ney,

    De que arquivo .reg você está falando? Os hives do Windows não tem extensão alguma!

    ResponderExcluir
  7. Então como posso identificá-los? Meu problema é o seguinte: deu pau no meu Vista, e não consigo iniciar o computador nem restaurar o Windows em um ponto de restauração mais cedo. Quero então usar o HD dele externamente, e salvar meus arquivos e a parte do registro que contém os dados de usuário do Outlook 2007.

    ResponderExcluir
  8. Descobri! Graças ao tópico "O poderoso Console de Recuperação do Vista", que tentei realizar (tentei a Correção de Inicialização, que deu erro, pois meu registro está corrompido - código 0x20), descobri que são os arquivos da pasta System32\Config\. Agora é ir atrás desse código pro Vista (achei ele pro XP) e tentar corrigir o problema.

    ResponderExcluir
  9. Muito obrigado!
    O seu artigo salvou-me!

    ResponderExcluir
  10. EXCELENTE MATÉRIA!

    ResponderExcluir
  11. Aprendi mais uma... valeu

    ResponderExcluir
  12. Jefferson Ryan, muito bom o seu Tutorial, resolveu o meu problema, sem ter que formatar o pc, gostei muito do seu Post, obrigado!

    ResponderExcluir
  13. Jefferson Ryan, muito bom o seu Tutorial: Editar o Regedit ofline, resolveu o meu problema sem ter que formatar o pc, gostei muito do Post

    ResponderExcluir
  14. Jefferson Ryan, eu aqui de novo, estou tentando resolver o problema de um Pc que troquei a plama mäe, preciso resetar a senha do Administrador pelo regedit, nâo consigo: `nâo foi possivel carregar a hive load`, como resolvo este problema, so: Windows 7.

    ResponderExcluir

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