
我正在嘗試兩種不同的工具來編輯和刪除 Windows 登錄機碼配置單元中的所有節點:
chntpw
它本質上是為了編輯密碼 (SAM) 檔案而設計的,但現在有一個互動式 shell 來編輯登錄檔。hivex
它是最新的,主要用於通用註冊表編輯。
為了了解這些程式之間的差異,我使用了 BCD 檔案(Windows 啟動管理員使用的),並使用這兩個程式刪除了所有節點。
正如預期的那樣,生成的文件具有相同的大小,但不相同。當我使用hivex
或開啟每個檔案時chntpw
,兩個編輯器都顯示兩個檔案的 0 個節點。
然而,當我打開hivex
的文件(據稱有 0 個節點的文件)時,我看到了其先前狀態的剩餘數據。
相反,chntpw
的結果沒有來自節點的任何殘留資料。
現在,我正在自學有關註冊表文件格式的知識,所以我必須問:
如果我要使用其中一種,我該選擇哪一種?我顯然想最真實地模擬微軟解析器/編寫器的行為(我希望能夠愚弄它們)。那麼剩下的數據還有意義嗎?如果我使用hivex
它來建立人造 BCD 文件,Windows 啟動管理員會給出任何錯誤嗎?
PS:這個問題與我的主要目的無關,我希望能夠明確這一點:我想在不使用官方 Windows 安裝程式的情況下修復/建立 BCD(啟動設定資料)檔案。因此,如果您在這方面有任何建議,請隨時提出。
答案1
Hivex 明確設計為不從檔案中刪除舊資料。這是一個重要的目標,因為註冊表配置單元格式沒有文件記錄,除了 MSFT 之外沒有人真正了解它的工作原理,而且我們不想在更改過程中破壞資料。
注意這確實不是意味著 hivex 無法刪除節點。您可以透過 API 刪除節點,常規 Windows 登錄呼叫不會看到這些節點,但不會從底層檔案中擦除/刪除/截斷任何資料。
如果您想要一個空的配置單元文件,我建議從一個空的配置單元文件開始。 hivex 原始碼中有一個空的 hive 檔案(稱為「minimal」),您可以使用它。