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

标签 c++ windows winapi

MSDN说:

Class registration and file name extension information is stored under both the HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER keys. The HKEY_LOCAL_MACHINE\Software\Classes key contains default settings that can apply to all users on the local computer. The HKEY_CURRENT_USER\Software\Classes key contains settings that apply only to the interactive user. The HKEY_CLASSES_ROOT key provides a view of the registry that merges the information from these two sources. HKEY_CLASSES_ROOT also provides this merged view for applications designed for previous versions of Windows.

这是否意味着如果我向 HKEY_LOCAL_MACHINE\Software\Classes 添加子项(例如新的文件扩展名),HKEY_CLASSES_ROOT 的容器将自动相应更新?

如果没有,我该怎么办?

最佳答案

HKEY_CLASSES_ROOT 不是真正的物理 hive (它不存储任何数据),它只是 HKEY_CURRENT_USER\Software\ClassesHKEY_LOCAL_MACHINE\Software\Classes 的合并 View 。对基础键的更新在 HKEY_CLASSES_ROOT 中立即可见。

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

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

关于c++ - 将新子目录添加到 HKEY_LOCAL_MACHINE\Software\Classes 后如何更新 HKEY_CLASSES_ROOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50146334/

相关文章:

c++ - "APIENTRY _tWinMain"和"WINAPI WinMain"的区别

windows - GetProcessDEPPolicy 说是永久的,但事实并非如此

c++ - Tcl_ParseExpr 不解析其中包含 'dot' 的表达式

java - 使用 c++ java native 代码的 GraphicsMagick 性能问题

windows - 将 ScheduledJob 注册为系统帐户(无需传入凭据)

c++ - C++ 中的 GDI+ 双缓冲

c++ - 我如何使用内置 Web 服务器部署 Wt 应用程序?

c++ - 为什么作者声称此代码会导致种族歧视?

java - 为什么windows下文件第一行的第一个字符是0?

windows - 如何在 osx 上运行 docker windows 容器?