Windows'';用'打开;工作

Windows'';用'打开;工作,windows,dde,Windows,Dde,我的印象是,当您双击一个文件(或从右键单击菜单中选择“打开方式”)时,Windows只是以文件名作为参数调用应用程序。大概是这样的: C:\>App.exe文件.abc 然而,我只是双击了一个.xls文件,然后检查了出现的Excel实例的PEB。令我惊讶的是,命令行没有包含文件名作为参数 所以这让我感到疑惑。Windows使用什么机制让相关应用程序打开文件?是否每个支持这种功能的应用程序都必须公开一种特殊的API?Windows将文件传递给程序的方式因应用程序而异。这种行为是不公平的 在Exce

我的印象是,当您双击一个文件(或从右键单击菜单中选择“打开方式”)时,Windows只是以文件名作为参数调用应用程序。大概是这样的:

C:\>App.exe文件.abc

然而,我只是双击了一个.xls文件,然后检查了出现的Excel实例的PEB。令我惊讶的是,命令行没有包含文件名作为参数


所以这让我感到疑惑。Windows使用什么机制让相关应用程序打开文件?是否每个支持这种功能的应用程序都必须公开一种特殊的API?

Windows将文件传递给程序的方式因应用程序而异。这种行为是不公平的


在Excel的情况下,他们使用所谓的用途。这就是为什么在命令行上看不到任何内容。

文件名在实际中并不总是作为参数传递


您在您的注册表中有一个与特定文件类型相关联的程序列表。系统检查文件扩展名,然后启动与相关联的进程。但始终将其作为参数传递不是真的。操作系统有自己的体系结构,可以从程序集调用程序。

对于那些投票赞成结束的人,我想知道一个关于操作系统内部(这是关键词)工作的问题怎么与编程无关?@Frederick:如果你不编程,那么它就与编程无关。@Frederick:有人把所有东西都编程好了。如果您有关于配置SQL Server的问题,请在serverfault.com上询问,即使是Microsoft编程的。如果您对
chkdsk
命令的高级使用有疑问,请在superuser.com上询问,即使是Microsoft编程的。请阅读常见问题解答()。链接位于每页的顶部和底部,这是一个提示。@Frederick您可以通过询问如何在自己的项目中创建类似的功能,使此编程与之相关。然后你会得到很多很好的答案,只有很少(如果有的话)接近票数。简单地问别人在他们的节目中是如何做到的不会有好的结局。没有人确切知道微软是如何做到这一点的。但是如果你问你如何做到这一点,我们中的许多人都可以告诉你如何达到类似的结果。这个问题的答案只与编程环境相关。除非您有兴趣在自己的应用程序中复制操作系统机制,否则了解操作系统机制是没有意义的。