从C#启动[分离]外部应用程序

时间:2018-02-28 11:34:08

标签: c#

当使用Process()类启动另一个进程时,新创建的进程仍然与调用start命令的进程相关联,这反过来又导致监视软件问题,甚至引起问题的应用程序本身。

所以问题是,是否可以从调用者启动外部二进制分离,作为一个完全独立的实例? (比如直接开始)

更新

有些流程可能是特定流程的子流程。

像IE一样是explorer.exe的子进程。

但是从带有Process().start(@"path/to/iexplere.exe")的C#app.exe开始,它是app.exe的子进程

那么可以将它附加到预期的explorer.exe吗?

2 个答案:

答案 0 :(得分:0)

最常见的方法是启动一个中间过程(让我们称之为 child ),然后启动要分离的二进制文件(孙子)。 / p>

然后终止中间过程,让孙子没有直接父母。

您没有显示任何代码,因此我们无法帮助您。你可以从这里开始。

答案 1 :(得分:0)

我找到了解决方法。

它包括两个应用程序。让我们称它们为handle.exe和detacher.exe

处理代码:

static void Main(string[] args)
        {
            Process.Start(AppDomain.CurrentDomain.BaseDirectory + "detacher.exe");
            Console.ReadLine();
        }

拆卸码:

static void Main(string[] args)
        {
            Process.Start("IExplore.exe", "google.com");
        }

句柄启动拆卸器并继续。 拆卸器启动IE并终止。 IE将下降到进程root并继续。

resulting process explorer