如何在HKEY_LOCAL_MACHINE \ Software \ Classes中添加新的subky后更新HKEY_CLASSES_ROOT

时间:2018-05-03 03:07:05

标签: c++ windows winapi

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的容器会自动更新并相应地更新?

如果没有,我该怎么办?

1 个答案:

答案 0 :(得分:0)

HKEY_CLASSES_ROOT不是真正的实体hive(它不存储任何数据),它只是HKEY_CURRENT_USER\Software\ClassesHKEY_LOCAL_MACHINE\Software\Classes的合并视图。基础密钥的更新立即显示在HKEY_CLASSES_ROOT

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

此外,HKEY_CURRENT_USER实际上是HKEY_USERS下的密钥的别名/符号链接。