HKEY_CLASSES_ROOT密钥
HKEY_CLASSES_ROOT(HKCR)密钥包含文件扩展名关联和 COM 类注册信息,如 ProgID、CLSID和 IID。 它主要用于与 16 位 Windows 中的注册表兼容。
类注册和文件扩展名信息存储在 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 密钥下。 HKEY_LOCAL_MACHINE\Software\Classes 密钥包含可应用于本地计算机上的所有用户的默认设置。 HKEY_CURRENT_USER\Software\Classes 密钥包含仅适用于交互式用户的设置。 HKEY_CLASSES_ROOT 键提供注册表的视图,用于合并这两个源中的信息。 HKEY_CLASSES_ROOT 还为为早期版本的 Windows 设计的应用程序提供此合并视图。
用户特定的设置优先于默认设置。 例如,默认设置可能指定要处理.doc文件的特定应用程序。 但是,用户可以通过在注册表中指定其他应用程序来替代此设置。
注册表函数(如 RegOpenKeyEx 或 RegQueryValueEx)允许指定 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\Classes 或 HKEY_CURRENT_USER\Software\Classes)。
相关主题