Windows 在注册表中的哪个位置存储用于打开某些文件类型的程序?

cla*_*aws 20 windows windows-registry windows-7 windows-vista windows-xp

安装 Adob​​e PDF 阅读器后,它会打开带有.PDF文件扩展名的文件。Ones 的默认网络浏览器打开.html文件,记事本打开.txt文件等。

这些文件类型在注册表中的确切位置 - 存储在注册表中的程序关联?

换句话说,Windows 如何知道它必须使用哪个软件/程序打开某个文件(类型)?

Gaf*_*aff 14

具有关联的打开都存储在HKEY_CLASSES_ROOT.

这是一个特殊的注册表配置单元,它将本地用户的关联HKEY_CURRENT_USER\Software\Classes与 中的系统关联结合在一起HKEY_LOCAL_MACHINE\Software\Classes

这是您在问题中提到的 PDF 协会的注册表中的一个镜头:

注册表中的 PDF 文件关联


Pio*_*ost 9

只是为了扩展 Gareth 的回答:

从使用注册表来看,它看起来像

  • 从条目HKEY_CURRENT_USER\Software\Classes从覆盖项HKEY_LOCAL_MACHINE\Software\ClassesHKEY_CLASSES_ROOT\Software\Classes
  • 使用assoc命令从命令行设置文件的扩展关联作用于HKEY_LOCAL_MACHINE\Software\Classes
  • 使用ftype命令从命令行设置文件类型关联作用于HKEY_LOCAL_MACHINE\Software\Classes


kxr*_*kxr 7

对于当前的 Windows 版本,

#1 首先你需要查找HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[EXT]\UserChoice\ProgId它是否存在。如果没有,请转到#5。

#2 ProgId 是一个文件类,例如Python.File(=> goto #6) 或类似的应用程序 ID,例如Applications\SciTE.exe(=> goto #3)

#3 找到应用程序 ID,Applications\SciTE.exe例如HKEY_CLASSES_ROOT\Applications\SciTE.exe\shell\open\command. 默认值是要运行的命令。

#4 完成。

#5 LookupComputer\HKEY_CLASSES_ROOT\[EXT]的文件类默认值,例如Python.File

#6 查找文件类,Python.File例如HKEY_CLASSES_ROOT\Python.File\shell. 默认值是默认命令,例如editopen如果不存在则默认)。

#7 查找它的edit命令,例如HKEY_CLASSES_ROOT\Python.File\shell\edit\command. 默认值是要运行的命令。注意:右键单击文件时,文件类的其他可用命令将显示在资源管理器中。

注意:HKEY_CLASSES_ROOT加入Software\Classesof HKEY_CURRENT_USER(优先级较高)和HKEY_LOCAL_MACHINE