当使用Process()
类启动另一个进程时,新创建的进程仍然与调用start命令的进程相关联,这反过来又导致监视软件或甚至在激活的应用程序本身内引起问题。
所以问题是,是否有可能从调用者启动外部二进制解除,作为一个完全独立的实例? (喜欢直接开始)
更新:
有些进程可能是特定进程的子进程。
像IE通常是explorer.exe的子进程。
但是从C#app.exe开始使用Process().start(@"path/to/iexplere.exe")
它是app.exe的子进程
那么可以将它附加到预期的explorer.exe吗?
最常见的方法是启动一个中间过程(让我们称之为子进程),然后启动要分离的二进制文件(孙子)。
然后终止中间过程,让孙子没有直接的父母。
您没有显示任何代码,因此我们无法帮助您。你可以从这里开始。
我找到了解决方法。
它包括两个应用程序。让我们称它们为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下降到进程根并继续。