HKEY_LOCAL_MACHINE\SOFTWARE\Classes 与 HKEY_CLASSES_ROOT

Ren*_*ger 8 registry

在微软的文档中,我发现了以下段落

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下键对应的HKEY_CLASSES_ROOT键,将其保持兼容早期版本的COM的。

现在,我不知道哪个键,其在该段是指:在HKLM \ SOFTWARE \ Classes下或HKCU关键。

如果有人能澄清,我将不胜感激。

Mar*_* Ba 15

HKEY_CLASSES_ROOT(缩写HKCR,不要与HKCU,混淆HKEY_CURRENT_USER)是HKLMHKCU中子层次结构的合并视图。...\Software\Classes

这实际上是记录在案的,尽管它没有从您引用的COM 文档链接:

HKEY_CLASSES_ROOT 密钥

类注册和文件扩展名信息存储在HKEY_LOCAL_MACHINEHKEY_CURRENT_USER键下。该 HKEY_LOCAL_MACHINE\Software\Classes密钥包含可应用于本地计算机上所有用户的默认设置。该 HKEY_CURRENT_USER\Software\Classes密钥包含仅适用于交互式用户的设置。该HKEY_CLASSES_ROOT键提供了 合并来自这两个 来源的信息的注册表视图HKEY_CLASSES_ROOT 为为以前版本的 Windows 设计的应用程序提供此合并视图。

他们甚至详细介绍了这个合并混乱细节,但是如果您需要合并视图中的任何特定行为,建议您验证它,因为在我看来,这些细节相当混乱:

  • 对于阅读,基本上大部分内容都是合并的,也就是说,您将看到重叠键中的两个键和两个值。
  • 当两者的相同时,您很可能会看到来自 HKCU 的值,而不是来自 HKLM 的值。
  • 当您在两者中具有相同/重叠的键时,您将看到其合并的值和子键。(或者我认为是这样。)(至少在 Win7 上。)
  • 当您通过 HKCR 写作时,这取决于您是否是管理员。以及您是否在 UAC 下运行。尽量不要通过 HKCR 写作,它会让你的生活更轻松。
    • 具体来说,我指的是这个 gem(这是你实际可以观察到的):

      如果您将密钥写入HKEY_CLASSES_ROOT 下的密钥,系统会将信息存储在HKEY_LOCAL_MACHINE \Software\Classes 下。

      如果您将值写入HKEY_CLASSES_ROOT 下的键,并且该键已存在于HKEY_CURRENT_USER \Software\Classes 下,则系统会将信息存储在那里而不是 HKEY_LOCAL_MACHINE\Software\Classes 下。