将新子目录添加到 HKEY_LOCAL_MACHINE\Software\Classes 后如何更新 HKEY_CLASSES_ROOT

foo*_*foo 2 c++ windows winapi

MSDN说:

类注册和文件扩展名信息存储在HKEY_LOCAL_MACHINEHKEY_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将自动相应更新?

如果没有,我该怎么办?

And*_*ers 5

HKEY_CLASSES_ROOT不是真正的物理配置单元HKEY_CURRENT_USER\Software\Classes(它不存储数据),它只是和的合并视图HKEY_LOCAL_MACHINE\Software\Classes。对底层密钥的更新在 中立即可见HKEY_CLASSES_ROOT

中的值会HKEY_CURRENT_USER覆盖 中的值,HKEY_LOCAL_MACHINE因为访问 时HKEY_CLASSES_ROOT,注册表内部会HKEY_CURRENT_USER首先尝试读取。

此外,HKEY_CURRENT_USER实际上是 下某个键的别名/符号链接HKEY_USERS