从另一个 exe 运行一个 Exe

Posted

技术标签:

【中文标题】从另一个 exe 运行一个 Exe【英文标题】:Run a Exe from another exe 【发布时间】:2015-03-10 12:18:23 【问题描述】:

我想从另一个 exe 执行一个 exe。但是如果第一个exe正在运行,则其他exe无法运行。

所以我想在执行第二个 exe 之前运行 exe 并退出应用程序。

对此有任何帮助。

【问题讨论】:

是什么阻止你从你的 shell 中简单地按顺序执行它们?你有没有尝试过什么?您进行了哪些研究? 第一个 exe 应该执行第二个 exe 。 .但是如果第二个 exe 被执行并且它发现第一个 exe 正在运行,那么它将退出。我想避免这种情况。 我用bat文件试了一下 我运行一个 bat 文件,它将等待第一个 exe 终止。在它被终止后,我从 bat 文件中执行其他 exe。这个 woe=rks 但我不想添加另一个文件。所以我要求提供任何其他线索。 您别无选择。您没有非常准确地说明您的要求,所以exec 可能 帮助(这取决于您的真正意思是“如果第一个 exe 正在运行,则其他 exe 无法运行”)但是,否则,您需要调用环境来处理这个问题,你无能为力。 【参考方案1】:

考虑从第一个应用启动的第三个应用。第三个检查以确保第一个已终止,然后启动第二个应用程序并自行终止。我过去不得不这样做;它工作正常。

【讨论】:

这与他的批处理文件解决方案没有什么不同,除了 less 灵活。 我不同意。它更便携,并且不依赖于任何特定的批处理器。 不,它的可移植性较差,因为您必须为每个平台重新构建它。批处理脚本是文本文件,您可以随身携带到几乎任何 UNIX(Linux、Mac),甚至可以在 MSYS 或 Cygwin 下的 Windows 上运行。它没有比这更便携的了。【参考方案2】:

我不确定它在 Windows 中是如何完成的,但我认为 linux 和 windows 之间的一般准则是相同的:

你需要 fork 一个子进程,在 Linux 中这是使用 fork() 函数完成的,在 Windows 中我认为你可以使用 CreateProcess()。 在此子进程中,您需要调用其中一个 exec 函数,该函数将该子进程的代码更改为您可以指定为 exec 函数参数的任何可执行文件的代码。

因此,代码应该是这样的伪代码:

c= CreateProcess()
if (c == child)

    exec("My other executable.exe")

这是一般程序,但你需要弄清楚语法

【讨论】:

【参考方案3】:

如果不允许两个主要进程同时执行,您将需要一个进程位于中间。这意味着您总共需要三个进程。两个主要进程 A 和 C,以及中间的代理 B。下面是它的下降方式:

进程 A 执行。 进程 A 启动进程 B 传入其进程 处理。 进程 A 终止。 进程 B 等待进程 A 的进程句柄。当进程 A 终止时,这会发出信号。 进程 B 启动进程 C。 进程 B 终止。

我假设您已经知道如何创建进程、向进程传递参数、复制句柄、等待句柄等等。

【讨论】:

以上是关于从另一个 exe 运行一个 Exe的主要内容,如果未能解决你的问题,请参考以下文章

从另一个 cmd.exe 提示符中创建一个新的 cmd.exe 窗口

从另一个 C# 应用程序调用 C# 应用程序中的方法 [重复]

从已编译的应用程序生成单个 exe 文件

Python更改使用startfile打开的exe的工作目录

内网渗透之Windows反弹shell

有没有办法从另一个进程中找出完整的文件路径?