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

问题描述 投票:-4回答:2

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

所以问题是,是否有可能从调用者启动外部二进制解除,作为一个完全独立的实例? (喜欢直接开始)

更新:

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

像IE通常是explorer.exe的子进程。

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

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

c#
2个回答
0
投票

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

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

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


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下降到进程根并继续。

resulting process explorer

© www.soinside.com 2019 - 2024. All rights reserved.