
Estou tentando duas ferramentas diferentes para editar e remover todos os nós de uma seção de registro do Windows:
chntpw
que foi essencialmente projetado para editar arquivos de senha (SAM), mas agora possui um shell interativo para editar arquivos de registro.hivex
que é mais atualizado e destinado principalmente à edição de registro de uso geral.
Só para ter uma ideia das diferenças entre esses programas, peguei meu arquivo BCD (que é usado pelo Gerenciador de inicialização do Windows) e usei esses dois programas para excluir todos os nós.
Como esperado, os arquivos resultantes têm o mesmo tamanho, mas não são idênticos. Quando abri cada um com hivex
ou chntpw
, ambos os editores mostram 0 nós para ambos os arquivos.
No entanto, quando abro hivex
o arquivo de, um arquivo que supostamente possui 0 nós, vejo dados restantes de seu estado anterior.
Por outro lado, chntpw
o resultado de não possui dados residuais dos nós.
Agora, estou me educando sobre o formato do arquivo de registro, então devo perguntar:
Se eu fosse usar um, qual deveria escolher? Obviamente, quero simular o comportamento do analisador/escritor da Microsoft de forma mais realista (quero ser capaz de enganá-los). O mesmo acontece com os dados restantes que têm algum significado; o Gerenciador de inicialização do Windows apresentaria algum erro se eu usasse hivex
para criar um arquivo BCD falso?
PS: A questão independe do meu objetivo principal, que espero ter ficado claro: quero corrigir/criar o arquivo BCD (Boot Config Data) sem usar o instalador oficial do Windows. Portanto, se você tiver algum conselho nesse sentido, fique à vontade para dar.
Responder1
O Hivex foi projetado explicitamente para não remover dados antigos do arquivo. Este é um objetivo importante porque o formato do hive do registro não está documentado e ninguém, exceto a MSFT, realmente entende como ele funciona, e não queremos destruir dados no processo de fazer alterações.
Observe que isso faznãosignifica que o hivex não pode excluir nós. Você pode excluir nós por meio da API e esses nós não serão vistos por chamadas regulares de registro do Windows, mas nenhum dado será limpo/removido/truncado do arquivo subjacente.
Se você quiser um arquivo hive vazio, sugiro começar com um arquivo hive vazio. Há um arquivo hive vazio no código-fonte do hivex (chamado 'mínimo') que você pode usar.