Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我的印象是,当您双击文件(或从右键单击菜单中选择“打开方式”)时,Windows 只是以文件名作为参数调用应用程序。像这样的东西:
C:\> App.exe 文件.abc
但是,我只是双击了一个 .xls 文件,然后检查了出现的 Excel 实例的 PEB。令我惊讶的是,命令行不包含文件名作为参数。
所以这让我想知道。Windows 用于让相关应用程序打开文件的机制到底是什么?是否有每个支持此类工具的应用程序都必须公开的特殊 API?
Windows 将文件传递给程序的方式因应用程序而异。此行为由注册表控制。
在 Excel 的情况下,他们为此目的使用所谓的DDE。这就是为什么您在命令行上什么也看不到的原因。
文件名实际上并不总是作为参数传递。
您自己有一个与您的注册表中的某些特定文件类型关联的程序列表。系统检查文件扩展名然后启动与之关联的进程。但始终将其作为参数传递是不正确的。操作系统有自己的体系结构,可以从其程序集中调用程序。