我想要从闪存驱动器运行以下应用程序,例如 F:\ App.exe :
static void Main(string[] args)
{
Process.Start(@"C:\AnotherApp.exe");
}
但是,在 App.exe 终止后,无法“安全删除”驱动器F:直到 AnotherApp.exe 终止。使用 Sysinternals Process Monitor 查看流程树时,进程 AnotherApp.exe 仍然是 App.exe 的子代(已终止)。< / p>
有没有办法从闪存驱动器上的应用程序启动进程,这不会阻止其安全删除?
答案 0 :(得分:2)
Process.Start
总是产生一个进程作为lauching应用程序的子进程。
即使你终止了父母,孩子仍然是那个孩子的孤儿,我认为它仍然拥有父句柄。
修改强>
好的,我明白了 问题是子进程以F:\
作为当前目录启动
您可以使用CreatePocess()
到P/Invoke
创建流程,并设置一个不同的起始目录(我已经测试了它并且它可以工作)。
此处示例: