2012-10-18 25 views
1

我創建了影子副本,並且想要使用RegLoadKey()從該影子副本裝入註冊表配置單元,因此我使用正常的註冊表函數檢查其內容。
這通常工作得很好,除非在某些機器中根本不起作用。將RegLoadKey從影子副本中複製到配置單元文件

我創建的卷影副本,並得到其掛載點 - 像
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8
後來我打電話

RegLoadKeyW(HKEY_LOCAL_MACHINE, "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\Windows\System32\config\SOFTWARE", "mntpoint"); 

此調用返回1009 - The configuration registry database is corrupt.

如果我使用CreateFileW()我可以成功地打開此文件使用該路徑,所以它肯定存在。

我已確保使用註冊表編寫器創建卷影副本,所以我不認爲這是問題所在。
如果我創建卷影副本並在重新啓動後嘗試此操作,則沒有區別。
這隻發生在一些機器上。在大多數情況下它工作得很好。我不知道什麼區別它不工作的機器。
該機是一個Windows 2008 64位。

+0

爲了澄清,這在一些機器上一致地工作,並一直在其他人失敗?任何可以識別的共同因素? –

+0

是的,兩者都是一致的。如前所述,「我不確定區別不適用的機器的區別」 – shoosh

回答

0

原來的問題是使用RegLoadKeyW()加載的配置單元需要在某個可寫的地方。由於卷影副本是隻讀的,因此失敗。
當我將裝載的文件複製到影子副本之外時,它工作正常。

+0

您的解決方案無法滿足您的問題描述。 您從未提及在「某些」情況下移動和/或更改其讀寫狀態的圖像。 – Pat

-3

您是否在創建卷影副本的相同機器上加載?

其中RegLoadKeyW()的言論說:

有兩個註冊表配置單元文件格式。在當前操作系統上創建的註冊表配置單元通常不能被以前的系統加載。

+0

想一想,這意味着升級後的操作系統可能會使用早期的註冊表格式,或者更糟糕的是,混合使用格式。 @shoosh,是否有可能受影響的機器是從先前版本的操作系統升級的? –

+0

不,這是一臺香草,新鮮安裝的機器 – shoosh

相關問題