
Windows レジストリ ハイブからすべてのノードを編集および削除するために、2 つの異なるツールを試しています。
chntpw
これは基本的にパスワード (SAM) ファイルを編集するために設計されましたが、現在はレジストリ ファイルを編集するための対話型シェルが備わっています。hivex
これはより最新であり、主に汎用のレジストリ編集を目的としています。
これらのプログラムの違いを理解するために、BCD ファイル (Windows ブート マネージャーによって使用される) を取得し、両方のプログラムを使用してすべてのノードを削除しました。
予想どおり、結果のファイルのサイズは同じですが、同一ではありません。 または のいずれかを使用してそれぞれを開くとhivex
、chntpw
両方のエディターで両方のファイルに対して 0 個のノードが表示されます。
hivex
しかし、ノードが 0 個あるはずの のファイルを開くと、以前の状態から残ったデータが表示されます。
逆に、chntpw
の結果にはノードからの残差データは含まれません。
現在、レジストリ ファイルの形式について勉強中なので、次の質問をさせていただきます。
使用する場合は、どれを選択すればよいでしょうか? 明らかに、Microsoft のパーサー/ライターの動作を最もリアルにシミュレートしたい (それらを騙せるようにしたい) です。では、残ったデータには意味があるのでしょうか。hivex
偽の BCD ファイルを作成するために を使用すると、Windows ブート マネージャーでエラーが発生しますか?
PS: この質問は私の主な目的とは関係ありませんが、それが明確になっていることを願っています。私は公式の Windows インストーラーを使用せずに BCD (ブート構成データ) ファイルを修正/作成したいと考えています。そのため、その方向でアドバイスがあれば、遠慮なく教えてください。
答え1
Hivex は、ファイルから古いデータを削除しないように明示的に設計されています。レジストリ ハイブ形式は文書化されておらず、MSFT 以外にその仕組みを実際に理解している人はいないことから、変更を加える過程でデータを破壊したくないため、これは重要な目標です。
これはないつまり、hivex はノードを削除できません。API を介してノードを削除することはできますが、それらのノードは通常の Windows レジストリ呼び出しでは表示されませんが、基になるファイルからデータが消去/削除/切り捨てられることはありません。
空のハイブ ファイルが必要な場合は、空のハイブ ファイルから始めることをお勧めします。hivex ソース コードには、使用できる空のハイブ ファイル (「minimal」と呼ばれます) があります。