1

我正在创建一个卷影副本,我想从该卷影副本安装一个注册表配置单元,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位。

4

2 回答 2

0

原来问题是要使用RegLoadKeyW()加载的蜂巢需要在某个地方可写。由于卷影副本是只读的,因此它失败了。
当我将安装的文件复制到影子副本之外时,它工作正常。

于 2012-10-21T22:50:16.817 回答
-3

您是否在创建卷影副本的同一台机器上加载?

RegLoadKeyW ()评论之一说:

有两种注册表配置单元文件格式。在当前操作系统上创建的注册表配置单元通常无法由早期操作系统加载。

于 2012-10-18T21:00:32.820 回答