【发布时间】:2018-05-03 03:07:05
【问题描述】:
MSDN 说:
类注册和文件扩展名信息存储在 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 键下。 HKEY_LOCAL_MACHINE\Software\Classes 键包含可应用于本地计算机上所有用户的默认设置。 HKEY_CURRENT_USER\Software\Classes 键包含仅适用于交互式用户的设置。 HKEY_CLASSES_ROOT 键提供了一个注册表视图,它合并了来自这两个来源的信息。 HKEY_CLASSES_ROOT 还为为以前版本的 Windows 设计的应用程序提供了这种合并视图。
这是否意味着如果我向HKEY_LOCAL_MACHINE\Software\Classes 添加一个子键(比如一个新的文件扩展名),HKEY_CLASSES_ROOT 的容器将自动相应地更新?
如果没有,我该怎么办?
【问题讨论】:
-
一句话,是的。它是自动处理的
-
会的。 HKEY_CLASSES_ROOT 是一种别名(与 HKEY_CURRENT_USER 一样)。
-
@Remy Lebeau,Paul Sanders,谢谢,我明白了。
-
HKCR 是杂乱无章的,旨在成为在 16 位版本的 Windows 中启动的程序的兼容性视图。如果可以帮助,请始终避免。
-
HKCR 在 NT 5 中已更改为合并视图。这是在运行时由 Windows 注册表 API 实现的。此外,当前用户软件类是一个单独的配置单元(“%LocalAppData%\Microsoft\Windows\UsrClass.dat”),它故意不与用户配置文件一起漫游。用户的“Software\Classes”键是指向此配置单元的符号链接,在 HKU 下加载为“
_Classes”。此外,对于句柄别名(不是符号链接),HKLM 用于“\Registry\Machine”,HKU 用于“\Registy\User”,HKCU 用于“\Registry\User\ ”。在内部,这些句柄别名在第一次使用时被映射到真正的 Key 句柄。