当使用Process()
类启动另一个进程时,新创建的进程仍然与调用start命令的进程相关联,这反过来又导致监视软件问题,甚至引起问题的应用程序本身。
所以问题是,是否可以从调用者启动外部二进制分离,作为一个完全独立的实例? (比如直接开始)
更新
有些流程可能是特定流程的子流程。
像IE一样是explorer.exe的子进程。
但是从带有Process().start(@"path/to/iexplere.exe")
的C#app.exe开始,它是app.exe的子进程
那么可以将它附加到预期的explorer.exe吗?
答案 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并继续。