-->

quinta-feira, 16 de abril de 2009

O papel dos ControlSets no Registro.

ControlSets são chaves no Registro que contém cópias paralelas de praticamente toda a configuração de hardware do Windows. Podem existir vários ControlSets (são geralmente dois), mas apenas um ControlSet está ativo em uma determinada sessão do Windows.

Pontos importantes:

  • Valores na chave HKLM\System\Select é que determinam qual o papel de cada ControlSet;
  • CurrentControlSet é apenas um atalho para o ControlSet apontado pelo valor Current. A chave CurrentControlSet não existe físicamente e por isso geralmente não aparecerá em procedimentos offline de edição do Registro;
No gráfico abaixo eu tento mostrar como os ControlSets se relacionam com os valores na chave Select:



É o ControlSet apontado por LastKnownGood que é carregado quando escolhemos a opção "última configuração válida" no menu de inicialização do XP:



Outros pontos importantes:
  • Embora geralmente CurrentControlSet aponte para ControlSet001 isso não é garantido. Se o atalho CurrentControlSet estiver aparecendo, use-o. Se não estiver, não assuma que deve editar este ou aquele ControlSet. É necessário sempre consultar os valores na chave Select para não piorar as coisas ou perder tempo;
  • No dia-a-dia os ControlSets tem conteúdo idêntico, pois a cada boot bem sucedido o ControlSet Current é copiado para o ControlSet LastKnownGood. É apenas "na hora do pau" que seus conteúdos podem ser diferentes;

"Última configuração válida" muitas vezes é capaz de resolver os problemas de inicialização provocados por instalação mal sucedida de hardware. Mas infelizmente o mesmo programa mal comportado que bagunça a chave apontada por CurrentControlSet também tem o poder (e a audácia), de mexer também em LastKnownGood. Nem sempre isso é feito com más intenções: quem programou o instalador pode simplesmente não saber o papel dos diferentes ControlSets ou da chave Select e racionalizar que "na dúvida, é melhor alterar todos".

Na verdade, sem saber disso aqui você pessoalmente pode fazer uma caca dessas editando o Registro. Você sabe que precisa alterar um determinado valor e, encontrando o mesmo valor nos dois ControlSets, edita ambos. No próximo boot se você fez besteira, sente os efeitos de uma dupla besteira.

A Navalha de Hanlon resume esse tipo de coisa: "Nunca atribua à malícia o que pode ser adequadamente explicado pela estupidez."

Seja lá qual foi a intenção, na hora do pau escolher "Última configuração válida" acaba não surtindo qualquer efeito.

4 comentários:

  1. Jefferson, olha. Esta dica de como trocar os controlset me foi bastante útil. Dá uma olhada neste post no meu blog:

    http://www.caetano.eng.br/crashcomputer/2009_06_07_arquivo.html#6794147175746486946

    É um erro bastante estranho e nunca tinha visto nada assim. Como disse lá, eu salvei o hive defeituoso para uma analise mais minuciosa.

    Você já se deparou com algo do tipo?

    ResponderExcluir
  2. Anônimo9/3/11 16:55

    Explicação nota 10, facil de entender e de suma importância. Obrigado e parabens!

    ResponderExcluir
  3. Anônimo9/3/11 16:56

    Ass; tarcis

    ResponderExcluir
  4. EXCELENTE MATÉRIA!

    ResponderExcluir

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