为什么操作系统无法决定使用哪个程序打开没有后缀的文件?

为什么操作系统无法决定使用哪个程序打开没有后缀的文件?

例如,如果我们将一个 .pdf 文件重命名为 .exe,并尝试在 Windows 下运行它,就会出现错误。但操作系统是否可以根据文件内容确定使用哪个程序打开文件?而不仅仅是隐藏其扩展名部分。

例如,我有一个名为“abc”的文件,它是一个 pdf 文件。当我双击它时,将打开一个 pdf 阅读器。

如果可能的话,是否存在与安全相关的问题?

答案1

这是可能的,但并不总是明确而干净的。

以 Microsoft Office 文档文件(.docx.xlsx等)为例。它们实际上是带有特殊内容的 zip 文件,Microsoft Office 知道如何打开它们。因此,如果操作系统根据文件格式进行猜测,它会认为它们是有效的 zip 文件并在压缩程序中打开它们。除非它先解压文件,然后开始查看内容以查看文件是否真的是 Excel 文件,此时它会删除临时解压的副本并将原始文件传递给 Excel。这是可以做到的,但你最终必须在操作系统中拥有大量逻辑才能做出此类猜测。

有些程序会尝试进行这种猜测 - 例如 UNIX 程序文件。您可以查看神奇数字r 页面,了解其工作原理。您可能在这里遇到的问题是,如果某个特别笨的人使用了其他人的魔法数字,您就得重新查看文件扩展名。想象一下带有“%PDF”的非 PDF 文件格式。

Mac OS 将文件类型存储在一个特殊的类型代码来解决这个问题。

相关内容