安装 Adobe PDF 阅读器后,它会打开带有.PDF
文件扩展名的文件。默认的 Web 浏览器会打开.html
文件,记事本会打开.txt
文件等。
这些文件类型 - 程序关联究竟存储在注册表中的什么位置?
换句话说,Windows 如何知道必须使用哪个软件/程序打开某个文件(类型)?
答案1
这打开用关联全部存储在 中HKEY_CLASSES_ROOT
。
这是一个特殊的注册表配置单元,它将 中的本地用户关联HKEY_CURRENT_USER\Software\Classes
与 中的系统关联结合在一起HKEY_LOCAL_MACHINE\Software\Classes
。
以下是您在问题中提到的 PDF 关联的注册表截图:
答案2
只是为了扩展 Gareth 的回答:
从注册表来看
- 来自 的条目
HKEY_CURRENT_USER\Software\Classes
覆盖来自的条目HKEY_LOCAL_MACHINE\Software\Classes
HKEY_CLASSES_ROOT\Software\Classes
assoc
使用命令从命令行设置文件的扩展名关联HKEY_LOCAL_MACHINE\Software\Classes
ftype
使用命令从命令行设置文件类型关联HKEY_LOCAL_MACHINE\Software\Classes
答案3
对于当前的 Windows 版本,
#1 首先你需要查找HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[EXT]\UserChoice\ProgId
是否存在。如果不存在,转到#5。
#2 ProgId 是一个文件类,例如Python.File
(=> 转到 #6) 或者类似的应用程序 ID,例如Applications\SciTE.exe
(=> 转到 #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
。默认值是默认命令,例如(如果不存在则edit
默认为)。open
#7 查找其edit
命令,如HKEY_CLASSES_ROOT\Python.File\shell\edit\command
。默认值是要运行的命令。注意:右键单击文件时,资源管理器中会显示文件类的其他可用命令。
注意:HKEY_CLASSES_ROOT
连接(更高优先Software\Classes
级HKEY_CURRENT_USER
)和HKEY_LOCAL_MACHINE
答案4
这些方法的问题是 Windows 无法真正处理不同可执行文件具有相同名称的可能性。使用 GUI 时,无法知道它们指的是哪一个。
这是因为,无论如何在 Win 7 中(我还没有检查过 Win 10),explorer 的默认程序存储在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\
但如果你在那里查看,你会发现例如在 OpenWithList 键中,就像LibreOfficeWriterPortable.exe
我的情况一样。但我有该程序的多个版本,所有版本都具有相同的名称,因此更改该键不会有帮助。
要找到它实际指向的内容,你必须转到(就我而言)
HKEY_USERS\S-1-5-21-966747605-1980359026-2421819745-1000\Software\Classes\Applications\LibreOfficeWriterPortable.exe\shell\open\command
找出实际上会打开的内容,即他们使用的名称实际上指向什么。