是否可以在不破坏系统的情况下导入 Windows 注册表文件?

Sam*_*mir 3 windows-registry windows-vista services

让我先检查一件事。通过 Regedit(范围:全部)进行导出相当于备份 Windows 注册表,对吗?

所以我昨天将 Reg 文件保存到磁盘驱动器 L。现在我想回到使用旧版本的注册表,以恢复对注册表所做的任何更改。这是通过 Regedit 中的导入选项完成的,对吗?

通过 Regedit 导入 Reg 文件是否意味着将 Reg 文件中的信息合并到已经存在的信息中,还是用导入的内容覆盖所有内容?我知道打开带有注册表修复的小型单个 Reg 文件会提示是否将其与注册表合并。但是通过 Regedit 的导出选项生成的 Reg 文件呢?

无论如何......所以我启动了Regedit,然后转到文件,导入,选择我的Reg文件,然后单击打开。导入需要一些时间,我的意思是文件大小为 480 MB 之类的。但是后来我收到一条错误消息,上面写着“并非所有密钥都已导入”或类似内容,因为它“被系统使用”或类似内容。因此,它无法导入所有内容。

所以我决定通过命令行支持重新启动到安全模式。现在这就是我得到的。

L:\>reg import "regbackup 2013-06-14.reg"
ERROR: Error accessing the registry.

L:\>
Run Code Online (Sandbox Code Playgroud)

访问注册表时出错?那什么都不告诉我!错误代码是什么?是什么原因?...

现在,如果我查看任务栏,我可以在扬声器上看到一个 x。如果我将光标悬停在它上面,我会看到它说“音频服务没有运行”。

音频服务

现在这是由于注册表导入操作失败还是由于我在安全模式下启动 Windows 造成的?我认为它不应该是持久的......那么如果我以安全模式开始呢?......我不允许这样做吗?我知道音频在安全模式下被禁用,但我现在不在安全模式下。我现在回到正常的 Windows 模式,所以服务现在应该真的可以工作了。所以这让我想到失败的导入可能只是以某种方式搞砸了注册表。

长话短说:是什么导致此错误和音频服务停止?以及如何将已从中导出的内容导入到注册表中?

更新

好的,我花时间在正常的 Windows 模式下再次尝试通过 Regedit 导入文件。所以这是我上面提到的错误消息。

导入注册表

注册表错误

它写道:

无法导入 L:\regbackup 2013-06-14.reg:并非所有数据都成功写入注册表。有些键是由系统或其他进程打开的。

如果某个系统或某个进程正在使用某些东西,那么自然而然的事情是什么?您必须关闭它并重试,对吗?但是,在执行维护或故障排除时,如何关闭系统并防止它使用某些文件?对!你进入安全模式!在安全模式下,只加载最低限度的驱动程序、服务和进程等等。我什至使用了非图形安全模式(命令行)。当这一切都失败了,然后呢?...

更新 2

这只是变得越来越好......或者不是!

音频服务称为 Winodws Audio。它依赖于 Windows Audio Endpoint Builder 和 RPC(远程过程调用)。RPC 已启动并正常工作,但我无法启动 Audio Endpoint。所以我也无法启动 Windows Audio。因此,通俗地说,在尝试导入注册表文件后,我的计算机上现在没有声音。好的!...

我变得绝望了,所以我决定尝试使用 GUI 的常规安全模式,以确保我已经尝试了所有这些模式。我启动了 Regedit 并尝试导入注册表文件。我收到的错误消息与我在 cmd 中使用 Reg 命令时收到的错误消息相同(请参阅上面的代码块)。我刚看到进度条,它正在导入,最后它吐出错误。

安全模式下的错误

请注意,在安全模式下在 Regedit 中收到的错误与在正常 Windows 模式下收到的错误不同。

在使用命令行运行安全模式并使用 Reg 命令导入注册表文件后,Windows 音频服务停止工作。如果我尝试在安全模式或正常 Windows 模式下运行音频服务或音频端点构建器,我得到的只是错误。

服务错误 1 ​​- 安全模式

服务错误 2 - 安全模式

显然,音频端点构建器无法在安全模式下启动。但是它也不能在正常模式下启动,这就是现在的问题。

服务错误 1 ​​- 正常模式

服务错误 2 - 正常模式

所以我得到的错误是:

Error 0x80070003: The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)

这一切都是导入注册表文件造成的吗?我简直不敢相信!

我没有任何系统还原点。有什么建议?

更新 3

上面所说的错误消息是什么“搜索路径”?...音频DLL?

我尝试在注册表中删除 Windows Audio Endpoint Builder 的依赖项。这样我就假设我可以在没有它的情况下启动 Windows 音频服务。我更改了以下值。

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AudioSrv
Value: DependOnService

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AudioEndpointBuilder
Value: DependOnService
Run Code Online (Sandbox Code Playgroud)

我重新启动,但它没有用。现在我收到消息,任务栏中没有安装音频输出设备

哦,是的,我也检查了C:\Windows\System32\,我有audiosrv.dll文件。

我尝试按照某些 Microsoft 网站上的建议重新安装音频驱动程序和软件,但也无济于事。当我将鼠标悬停在扬声器图标上时,任务栏中仍然显示相同的消息。

下一步将是进行文件/文件夹备份并重新安装 Windows。除非有人提出可以解决问题的建议。

顺便说一句,Windows RE(恢复环境)没有帮助,因为启动 Windows 没有问题。它主要用于修复启动问题。

此外,运行sfc /scannow会产生以下结果。

C:\Windows\system32>sfc /scannow

Beginning system scan.  This process will take some time.


There is a system repair pending which requires reboot to complete.  Restart
Windows and run sfc again.

C:\Windows\system32>
Run Code Online (Sandbox Code Playgroud)

我尝试了正常模式、安全模式、控制台模式,什么都没有……同样的消息。我怀疑在运行该psexec -i -d -s %windir%\regedit.exe命令然后尝试将 Reg 文件作为系统帐户导入后,此命令会成为问题,如 STTR 所建议的那样。

Der*_*ler 6

让我马上弄清楚一件事,像您一样导入一个巨大的注册表文件是一个坏主意。

将密钥导出到.reg文件时,您只需创建一个文件,该文件将包含有关如何重新创建所选密钥的说明。请注意,它只会负责创建密钥。因此,当您稍后导入文件时,将发生合并。注册表中不再存在的键将被重新创建(这可能是一件可怕的事情),并且已更改的键的值将被覆盖(这可能同样可怕)。导入.reg文件后,从 Windows 稍后启动创建的密钥仍将存在。

一个.reg文件甚至可以包含指令,删除从注册表完全键(虽然从注册表编辑器导出时,将不会是这样)。因此,最好确切地知道.reg文件包含什么以及它将做什么。对于 480 MB 的文件,您不太可能知道解析它时会发生什么。

在这一点上,我严重怀疑您是否能够从中恢复并将一切恢复到正常工作状态。幸运的是,这样做的结果似乎并没有太大的灾难性。祝你好运!如果您启用了卷影副本,指南如何在 Windows 7 中恢复以前的注册表版本可能会有所帮助。

我知道有几个在线指南(如Windows 网站上的指南)将.reg文件导出视为注册表的备份,在某种程度上,确实如此。它在某个时候代表了注册表的某个状态,但将该状态与以后的状态合并并不是真正可取的(正如您刚刚发现的那样)。

但是,如果我想对注册表进行适当的备份,我会将注册表文件从C:\Windows\System32\Config. 这些可以在以后简单地替换以完全替换注册表的状态。