Windows 注册表中的多个 ControlSet 之间有什么区别?

Windows 注册表中的多个 ControlSet 之间有什么区别?

下有多个名称中带有“ControlSet”的分支HKEY_LOCALMACHINE\SYSTEM

Windows 使用这 3 个键的方式有哪些根本区别?

HKLM\System\ControlSet001
HKLM\System\ControlSet002
HKLM\System\CurrentControlSet

答案1

微软说得最好KB100010

回到 Windows(我认为是 95),您可以将任何驱动程序/硬件组件设置为仅在某种设置模式下工作,用户可在启动时选择该模式。

默认情况下,你有

\ControlSet001-上次启动

\ControlSet002 - 已知良好设置

\CurrentControlSet-当前启动

编辑 -

看起来这是最近才被拿出来,我个人从 95 年起就没用过它,不过,我找到了一个可以从 Windows XP 向您展示它的好网站

从系统属性:

在此处输入图片描述

从设备管理器中:

在此处输入图片描述

答案2

ControlSetWindows在注册表中至少维护两个条目。您可能拥有 和或ControlSet001中的一个(或两个)。ControlSet002ControlSet003

它们之间没有明显的差异;它们保存了有关系统硬件、服务和其他系统设置的重要信息,这些信息对于启动和运行系统是必需的,并且通常是相同的。

CurrentControlSet项目是最容易描述的:它只是映射到ControlSet###您当前正在使用的任何一个,就像如何HKEY_CURRENT_USER映射到HKEY_USERS分支中当前处于活动状态的任何用户一样。当然,您所做的任何更改CurrentControlSet都将写入它所映射到的集合。

您拥有多个控制集的原因是,当您更改系统功能(尤其是硬件)时,系统可能无法正常工作。如果启动所需的信息只有一个副本,并且启动失败,那么您就会遇到麻烦,因为尝试修复问题需要大量工作(如果不是整个系统,至少需要单独的操作系统)。相反,对一个控制集进行更改,如果 Windows 无法成功启动,您可以使用另一个更改前的控制集重新启动。这样,至少您可以快速恢复运行,以便您可以使用系统(和互联网)找出问题所在。

当你设法正确启动,更改被写入另一个副本,从而使其保持最新状态(我相信它发生在关机时或某个时候;只是不是在看似成功的启动之后立即启动,因为它可能有也可能没有实际上成功)。

有些人将两个控制集误解为“正常”和“备用”。从某种意义上说,这是正确的,但实际上,您可以从其中任何一个启动。没有主集或次集,它们可以循环使用。换句话说,如果您通常使用ControlSet001,然后启动失败,那么现在您可以ControlSet002/003正常使用,直到下次启动失败时,您将切换回来。

相关内容