2009-10-28 64 views
0

我正在爲我的工作區編寫程序,並且因爲我們在受硬盤驅動器損壞的計算機上工作,所以我們有時需要在啓動之前與其註冊表配合工作。修改非本地註冊表配置單元

最值得注意的是,我們正試圖修復源自注冊表配置單元的0x7b錯誤,該錯誤控制了默認的硬盤驅動器被損壞,並且計算機無法啓動。

微軟有一個Knowledge Base entry關於如何手動完成它,但我們希望自動化它。這就是說,所需要的是我必須在另一個硬盤上編輯註冊表配置單元。

如何修改位於與C#不同的硬盤驅動器上的註冊表配置單元?其他硬盤驅動器將包含完整的操作系統,但目前不會運行。

回答

1

我假定您可以讀取目標驅動器上的文件。您需要使用RegLoadKey() Win32 API(或者如果有的話,則是.NET相同)來將配置單元加載到本地計算機註冊表中的密鑰中。在您傳遞給RegLoadKey()的密鑰下操作該配置單元的內容。

Then RegUnloadKey()

閱讀有關RegLoadKey()的文檔 - 您可能需要使用權限來讓事情正常工作。

+0

如果其他硬盤安裝在F:上,我需要提供哪些路徑才能通過RegLoadKey訪問它? – Malfist 2009-10-28 20:13:40

+0

註冊表配置單元只是普通文件(但可能有不同尋常的屬性 - 我不記得了)。如果我記得正確的'\ windows \ system32 \ config \ system'和'\ windows \ system32 \ config \ software'包含大部分機器級別的東西,如果我沒有記錯的話。 – 2009-10-28 21:19:51

+0

我想通了。 RegLoadKey(0x80000002,「OLD_SYSTEM」,「F:\ Windows \ System32 \ config \ system」); – Malfist 2009-10-28 21:32:17