Невозможно «безопасно удалить» флэш-диск после вызова Process.Start и завершения - PullRequest
2 голосов
/ 12 марта 2011

У меня есть следующее приложение, которое я хочу запустить с флешки, скажем 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 (завершается).

Есть ли способ запустить процесс из приложения на флешке, который бы не блокировал его безопасное удаление?

1 Ответ

2 голосов
/ 12 марта 2011

Process.Start всегда порождает процесс как потомок запускающего приложения.

Даже если вы уволите родителя, ребенок все равно останется сиротой этого ребенка, и я думаю, что он все еще содержит родительские дескрипторы.

РЕДАКТИРОВАТЬ:

ОК, я понял.
Проблема в том, что дочерний процесс запускается с F:\ в качестве текущего каталога.
Вы можете создать процесс, используя CreatePocess() - P/Invoke, и установить другой начальный каталог (я проверил, и он работает).

Пример здесь:

http://pastebin.com/QsMqejS5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...