我的印象是,当您双击某个文件(或从右键菜单中选择“打开方式”)时,Windows只会以文件名作为参数调用该应用程序。像这样:
C:\> App.exe file.abc
但是,我只是双击.xls文件,然后检查出现的Excel实例的PEB。令我惊讶的是,命令行不包含文件名作为参数。
这让我感到疑惑。 Windows用于使相关应用程序打开文件的机制究竟是什么?是否有一个特殊的API,每个支持此类工具的应用程序必须公开?
答案 0 :(得分:6)
Windows如何将文件传递给程序因应用程序而异。此行为是controlled by the registry。
对于Excel,他们使用所谓的DDE来达到目的。这就是为什么你在命令行上看不到任何东西。
答案 1 :(得分:-1)
文件名并不总是作为实际参数传递。
您自己拥有与ur registry中某些特定文件类型相关联的程序列表。系统会检查文件扩展名,然后启动与之关联的进程。但始终传递它作为参数不为真。操作系统有自己的架构来从程序集中调用程序。