调用Process.Start并终止后,无法“安全删除”闪存驱动器

时间:2011-03-12 12:19:45

标签: c# .net process

我想要从闪存驱动器运行以下应用程序,例如 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>

有没有办法从闪存驱动器上的应用程序启动进程,这不会阻止其安全删除?

1 个答案:

答案 0 :(得分:2)

Process.Start总是产生一个进程作为lauching应用程序的子进程。

即使你终止了父母,孩子仍然是那个孩子的孤儿,我认为它仍然拥有父句柄。

修改

好的,我明白了 问题是子进程以F:\作为当前目录启动 您可以使用CreatePocess()P/Invoke创建流程,并设置一个不同的起始目录(我已经测试了它并且它可以工作)。

此处示例:

http://pastebin.com/QsMqejS5