据我所知,Linux 中的文件扩展名对操作系统没有任何特殊含义。当然,它可以帮助用户识别文件,但操作系统本身根本不关心它(对吗?)。
我听说 Windows 上不是这种情况,但我不太明白 -文件扩展名除了在 Windows 中为人工提供帮助之外还有什么用途?
我对此感到担心,因为我是一名软件开发人员,需要构建与用户输入文件交互的软件,因此我需要验证这些文件的有效性。对于 Linux,我 100% 确定我无法通过文件名来验证文件,因为它可以是任何东西。对于 Windows 也是如此吗?
答案1
正如 Sam 在评论中提到的,扩展程序的存在是为了让 Windows 知道在打开文件时要使用哪个应用程序。所以是的,它确实对 Windows 有用。
可以使用 dism 生成链接到特定应用程序的扩展列表:
Dism /Online /Export-DefaultAppAssociations:"D:\Associations.xml"
它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<DefaultAssociations>
<Association Identifier=".bmp" ProgId="AppX43hnxtbyyps62jhe9sqpdzxn1790zetc" ApplicationName="Photos" />
<Association Identifier=".c" ProgId="Applications\Notepad.exe" ApplicationName="Notepad" />
<Association Identifier=".conf" ProgId="Applications\NOTEPAD.EXE" ApplicationName="Notepad" />
注册表中还包含有关各种扩展的信息HKEY_CLASSES_ROOT
。
Windows 不执行任何验证测试。应用程序可能会执行此操作,或者它们可能只是通知您,如果文件不“有效”,它们将无法读取该文件。