【问题标题】:Combining two programs into one?将两个程序合二为一?
【发布时间】:2015-07-05 05:44:12
【问题描述】:

如果我有两个 Windows 可执行文件,我可以将它们组合成一个可执行文件,并依次运行它们吗?

我尝试使用一个简单的程序将它们读入一个,从而粗略而准确地做到这一点。结果是第二个程序运行了,但第一个程序从未运行。下面我试图更好地解释这一点:

C:\> bind.exe a.exe b.exe >out.exe

b.exe 在 a.exe 之后写入 out.exe 如果您查看 out.exe,它看起来像 a.exe THEN b.exe,完全用二进制编写,包括标题和其他不应重复两次的信息。 运行它会导致 b.exe 正在运行,而 a.exe 不会运行。我试着像这样切换顺序

C:\> bind.exe b.exe a.exe >out.exe

在这种情况下运行 a.exe。

基本上那个方法不起作用,那我该怎么做呢?我考虑在遵循this explanation of the windows PE format(用于Windows可执行文件的格式)的格式并删除标题等时使用十六进制编辑器做一些事情,但我觉得采取的耗时较少。

【问题讨论】:

  • 不,没有办法做到这一点。您可以获得的最接近的是包含其他两个程序的嵌入式副本的程序,并自动提取并运行它们。
  • 你为什么不写一个批处理脚本以正确的顺序执行它们?
  • @pcluddite 我可以这样做,但批处理文件看起来很难看,使用一个意味着我需要在一个文件夹中有 3 个文件,而不是一个自治文件。所以美学。
  • @HarryJohnston 你的意思是像一个自解压档案?
  • 您不需要批处理文件。从命令行类型a && b - 这运行a,如果成功运行b。其他选项见ss64.com/nt/syntax-redirection.html

标签: windows cmd exe portable-executable


【解决方案1】:

批处理文件

最简单的方法是使用批处理文件。一个接一个地跑。

资源文件

另一种方法是创建第三个 exe 并将前两个作为资源添加到其中。在运行时,将资源写入一个文件夹,然后一个接一个地运行。

其他解决方案

其他建议在这里

Merge two exe files into one programmatically

【讨论】:

  • 我想我会选择“资源文件”路线。谢谢。
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 2015-12-30
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2010-12-28
相关资源
最近更新 更多