我有一个要从闪存驱动器运行的应用程序,比如 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 的子进程(已终止)。
有没有办法从闪存驱动器上的应用程序启动进程,而不会阻止其安全删除?
最佳答案
Process.Start
始终生成一个进程作为正在启动的应用程序的子进程。
即使你终止了 parent , child 仍然是那个 parent 的孤儿,我认为它仍然持有 parent 的句柄。
编辑:
好的,我明白了。
问题是子进程以 F:\
作为其当前目录启动。
您可以使用 CreatePocess()
通过 P/Invoke
创建进程,并设置一个不同的起始目录(我已经测试过它并且有效)。
这里的例子:
关于c# - 调用 Process.Start 并终止后无法访问 "Safely Remove"闪存驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282435/