HKEY_CLASSES_ROOT密钥

HKEY_CLASSES_ROOTHKCR)密钥包含文件扩展名关联和 COM 类注册信息,如 ProgIDCLSIDIID。 它主要用于与 16 位 Windows 中的注册表兼容。

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

用户特定的设置优先于默认设置。 例如,默认设置可能指定要处理.doc文件的特定应用程序。 但是,用户可以通过在注册表中指定其他应用程序来替代此设置。

注册表函数(如 RegOpenKeyExRegQueryValueEx)允许指定 HKEY_CLASSES_ROOT 键。 从在交互式用户帐户中运行的进程调用这些函数时,系统会将 HKEY_LOCAL_MACHINE\Software\Classes 中的默认设置与 HKEY_CURRENT_USER\Software\Classes的交互式用户的设置合并。 有关如何合并这些设置的详细信息,请参阅 合并HKEY_CLASSES_ROOT视图。

若要更改交互式用户的设置,请将更改存储在 HKEY_CURRENT_USER\Software\Classes 下,而不是 HKEY_CLASSES_ROOT

若要更改默认设置,请将更改存储在 HKEY_LOCAL_MACHINE\Software\Classes下。 如果将密钥写入 HKEY_CLASSES_ROOT下的密钥,系统会将信息存储在 HKEY_LOCAL_MACHINE\Software\Classes下。 如果将值写入到 HKEY_CLASSES_ROOT下的密钥,并且密钥已存在于 HKEY_CURRENT_USER\Software\Classes下,则系统会将信息存储在该处,而不是存储在 HKEY_LOCAL_MACHINE\Software\Classes下。

在交互式用户的安全上下文中运行的进程不应将 HKEY_CLASSES_ROOT 键与注册表函数一起使用。 相反,此类进程可以显式打开 HKEY_LOCAL_MACHINE\Software\Classes 密钥以访问默认设置。 若要打开将 HKEY_LOCAL_MACHINE\Software\Classes 内容与指定用户的设置合并的注册表项,这些进程可以调用 RegOpenUserClassesRoot 函数。 例如,模拟 客户端的线程可以调用 RegOpenUserClassesRoot(如果需要检索正在模拟的客户端的合并视图)。 请注意,如果未加载指定用户的用户配置文件,RegOpenUserClassesRoot 将失败。 登录时,系统会自动加载交互式用户的配置文件。 对于其他用户,需要调用 LoadUserProfile 函数来显式加载用户的配置文件。

如果应用程序使用管理员权限运行并且用户帐户控制被禁用,COM 运行时将忽略每用户 COM 配置,并且仅访问每台计算机 COM 配置。 在安装到每台计算机 COM 配置存储(HKEY_LOCAL_MACHINE\Software\Classes)期间,需要管理员权限的应用程序应注册依赖 COM 对象。 有关详细信息,请参阅 AC:UAC:COM Per-User 配置

Windows Server 2003 和 Windows XP/2000: 应用程序可以将依赖 COM 对象注册到每台计算机或每用户 COM 配置存储(HKEY_LOCAL_MACHINE\Software\ClassesHKEY_CURRENT_USER\Software\Classes)。

HKEY_CLASSES_ROOT(资源工具包注册表参考)