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 配置存储期间注册依赖 COM 对象, (HKEY_LOCAL_MACHINE\Software\Classes) 。 有关详细信息,请参阅 AC: UAC: COM Per-User配置。
Windows Server 2003 和 Windows XP/2000: 应用程序可以将依赖 COM 对象注册到每计算机或每用户 COM 配置存储 (HKEY_LOCAL_MACHINE\Software\Classes 或 HKEY_CURRENT_USER\Software\Classes) 。
相关主题