什么是HKEY_CLASSES_ROOT?

有关HKEY_CLASSES_ROOT注册表配置单元的详细信息

HKEY_CLASSES_ROOT通常缩写为HKCR ,是Windows注册表中注册表配置单元 ,包含文件扩展名关联信息以及编程标识符(ProgID),类ID(CLSID)和接口ID(IID)数据。

尽可能以最简单的方式,HKEY_CLASSES_ROOT注册表配置单元包含Windows的必要信息,以便在您要求它执行某些操作时知道该执行什么操作,例如查看驱动器的内容或打开某种类型的文件等。

如何进入HKEY_CLASSES_ROOT

HKEY_CLASSES_ROOT是一个注册表配置单元,因此位于注册表编辑器的顶层:

  1. 打开注册表编辑器
  2. 在注册表编辑器的左侧找到HKEY_CLASSES_ROOT
  3. 双击或双击单词HKEY_CLASSES_ROOT以展开配置单元,或使用左侧的小箭头

如果以前在您的计算机上使用过注册表编辑器,则可能需要先折叠所有打开的注册表项,然后才能看到HKEY_CLASSES_ROOT配置单元。 这可以通过与打开相同的方式完成 - 通过双击/点击它们或通过选择箭头。

HKEY_CLASSES_ROOT中的注册表子项

HKEY_CLASSES_ROOT配置单元下的注册表项列表非常长,同样令人困惑。 我无法解释你可能会看到的数千个密钥中的每一个,但是我可以将它分解成一些可管理的部分,这将有望澄清注册表的这一部分。

以下是您可以在HKEY_CLASSES_ROOT配置单元下找到的许多文件扩展名关联密钥中的一部分,其中大部分将以一段时间开始:

这些注册表键中的每一个都存储有关Windows双击或双击带有该扩展名的文件时应执行的操作的信息。 它可能包括右击/轻敲文件时在“打开方式”部分中找到的程序列表,以及列出的每个应用程序的路径。

例如,在我的电脑上,当我用draft.rtf的名称双击或双击文件时,写字板打开文件。 发生这种情况的注册表数据存储在HKEY_CLASSES_ROOT \ .rtf项中,该项​​在我的计算机上将写字板定义为应打开RTF文件的程序。

警告:由于如何设置HKEY_CLASSES_ROOT项的复杂性,我绝对建议您更改注册表中的默认文件关联。 相反,请参阅如何在Windows中更改文件关联以获取有关在常规Windows界面中执行此操作的说明。

HKCR& CLSID,ProgID,& IID

HKEY_CLASSES_ROOT中的其余键是ProgID,CLSID和IID键。 以下是各自的一些示例:

ProgID键位于HKEY_CLASSES_ROOT的根目录 ,与上面讨论的文件扩展名关联一起:

所有CLSID键位于CLSID子项下:

所有IID密钥都位于Interface子项下:

ProgID,CLSID和IID键与计算机编程的一些非常技术性的方面有关,并且超出了本讨论的范围。 但是,您可以分别在这里和这里阅读更多关于这三个地方的信息。

备份HKEY_CLASSES_ROOT配置单元

毫无例外,您应该始终对您计划编辑或删除的任何注册表项进行备份。 如果您需要将HKEY_CLASSES_ROOT或注册表中的任何其他位置备份到REG文件 ,请参阅如何备份Windows注册表

如果出现问题,您可以随时通过备份将Windows注册表恢复到工作状态。 您只需双击或双击该REG文件并确认您想要进行这些更改。

更多关于HKEY_CLASSES_ROOT

尽管您可以编辑并完全删除HKEY_CLASSES_ROOT配置单元的任何子项,但根文件夹本身(如注册表中的所有配置单元)不能被重命名或删除。

HKEY_CLASSES_ROOT是一个全局配置单元,这意味着它可以包含适用于计算机上所有用户的信息,并且可供所有用户查看。 这与一些蜂巢相反,蜂巢的信息仅适用于当前登录的用户。

但是,因为HKEY_CLASSES_ROOT配置单元实际上是在HKEY_LOCAL_MACHINE配置单元( HKEY_LOCAL_MACHINE \ Software \ Classes )和HKEY_CURRENT_USER配置单元( HKEY_CURRENT_USER \ Software \ Classes )中找到的组合数据,所以它也包含用户特定的信息。 即使是这样,HKEY_CLASSES_ROOT仍然可以被任何和所有用户浏览。

当然,这意味着当在HKEY_CLASSES_ROOT配置单元中创建一个新的注册表项时,HKEY_LOCAL_MACHINE \ Software \ Classes中将出现同一个注册表项,并且在从其中一个中删除一个时,同一个密钥将从其他位置中删除。

如果注册表项驻留在两个位置,但以某种方式冲突,则在登录用户的配置单元HKEY_CURRENT_USER \ Software \ Classes中找到的数据优先并在HKEY_CLASSES_ROOT中使用。