文件资源管理器如何打开文件?

How does File Explorer open files?

这可能是个愚蠢的问题,但是当我双击应用程序或 .exe 应用程序一词时,幕后会发生什么?

对于'Non-Developer',它只是在双击后在正确的环境中打开文件。但我想知道,它是怎么做到的,文件管理器怎么知道要打开什么? (word 中的 .docx,texteditor 中的 .txt 等...)

+ 我想知道如何在 Node.js 中做到这一点,这是使用 child_process 和每个后缀的 if 语句的最佳方式吗?

对于 Node.js,您可以使用 child_process 到 shell 到 the start command,其功能与文件资源管理器类似。

例如start some/path/to/file.docx 将在与格式关联的默认程序中打开该文件。

有一个文件关联告诉Windows如何处理某个文件扩展名。您可以在 Windows 命令提示符中键入 assoc 来查看它们。例如:

C:\test>assoc .txt
.txt=txtfile

所以 Windows 现在知道,扩展名为 .txt 的文件是 txtfile.

ftype 定义如何处理该文件类型:

C:\test>ftype txtfile
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

因此,每当您双击文件时,Windows 都会检查它是否与任何文件类型相关联。然后它查找如何处理该文件类型并执行该命令(在上面的示例中,它使用文件名作为参数打开记事本)。

assocftype 都可以更改设置(例如用另一个编辑器打开 .txt 文件)。但如果您尝试这样做,请帮自己一个忙并记下原始设置,以便您能够在需要时恢复更改。

也可以直接在注册表中进行更改(不推荐,当您没有处理注册表的经验时)