将两个程序合二为一?

Combining two programs into one?

如果我有两个 windows 可执行文件,我能否将它们组合成一个可执行文件,然后 运行 按顺序排列?

我尝试粗略而准确地执行此操作,方法是使用一个简单的程序将它们合二为一。结果是第二个程序是 运行,但第一个程序从来不是。下面我试图更好地解释这一点:

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

b.exe在a.exe之后写成out.exe 如果你看out.exe,它看起来像a.exe THEN b.exe,完全是用二进制写的,包括headers和其他不应重复两次的信息。 运行 它导致 b.exe 成为 运行,而 a.exe 不是 运行。我试过像

这样切换顺序
C:\> bind.exe b.exe a.exe >out.exe

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

基本上那个方法是行不通的,那我该怎么办呢?我考虑过使用十六进制编辑器做一些事情,同时遵循 this explanation of the windows PE format 的格式(用于 windows 可执行文件的格式)并删除 headers 等,但我觉得这样更省时采取的路线。

批处理文件

最简单的方法是使用批处理文件。并且运行一个接着一个

资源文件

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

其他解决方案

这里有其他建议

Merge two exe files into one programmatically