Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从卷影副本中将RegLoadKey添加到配置单元文件_C_Windows_Registry_Backup_Shadow Copy - Fatal编程技术网

C 从卷影副本中将RegLoadKey添加到配置单元文件

C 从卷影副本中将RegLoadKey添加到配置单元文件,c,windows,registry,backup,shadow-copy,C,Windows,Registry,Backup,Shadow Copy,我正在创建一个卷影副本,我想使用RegLoadKey()从该卷影副本装载一个注册表配置单元,因此我使用正常的注册表函数查看其内容。 这通常工作得很好,除非在某些机器上根本不工作 我创建卷影副本并获取其装载点—类似于 \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8 然后我打电话 RegLoadKeyW(HKEY_LOCAL_MACHINE, "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\Window

我正在创建一个卷影副本,我想使用
RegLoadKey()
从该卷影副本装载一个注册表配置单元,因此我使用正常的注册表函数查看其内容。
这通常工作得很好,除非在某些机器上根本不工作

我创建卷影副本并获取其装载点—类似于
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8

然后我打电话

RegLoadKeyW(HKEY_LOCAL_MACHINE, "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\Windows\System32\config\SOFTWARE", "mntpoint");
此调用返回
1009-配置注册表数据库已损坏。

如果我使用
CreateFileW()
我可以使用该路径成功打开此文件,因此它肯定在那里

我已确保使用注册表写入程序创建卷影副本,因此我认为这不是问题所在。
如果我创建卷影副本并在重新启动后尝试此操作,则没有区别。
这只发生在某些机器上。在大多数情况下,它工作得很好。我不确定它不工作的机器有什么区别。

这台计算机是windows 2008 64位。

是否在创建卷影副本的同一台计算机上加载

其中一条评论说:

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


原来问题是要使用
RegLoadKeyW()
加载的配置单元需要位于可写的位置。由于卷影副本是只读的,因此失败。

当我将挂载的文件复制到卷影副本之外时,它工作得很好。

澄清一下,这在某些机器上始终有效,而在其他机器上却始终失败?你能确定哪些共同因素?是的,两者都是一致的。正如前面提到的,“我不确定它不工作的机器之间有什么区别”,这意味着升级后的操作系统可能会使用早期的注册表格式,或者更糟糕的是,混合格式@shoosh,受影响的机器是否可能是从以前版本的操作系统升级而来的?不,这是一台普通的、新安装的机器。您的解决方案永远无法与您的问题描述相匹配。您从未提及在“某些”案例中移动和/或更改其r/w状态的图像。