Когда программа копируется во многих местах, а затем запускается независимо друг от друга, иногда может появиться сообщение об ошибке:Как безопасно получить идентификатор процесса после процесса. Start()?
ProcessStartInfo startInfo = new ProcessStartInfo(exePath);
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.ErrorDialog = false;
Process process = new Process() { StartInfo = startInfo };
bool isStarted = process.Start();
int processId = process.Id; // Failed as bellow When the isStarted is false
System.InvalidOperationException: Никакой процесс не связан с этим объекта.
Возможный дубликат [получение PID процесса, начатого Process.start()] (http://stackoverflow.com/questions/12892268/getting-pid-of-process-started-by-process-start) –
Не та же проблема. – King
Скорее всего, ваш процесс начался, но столкнулся с немедленным сбоем, как необработанное исключение, и немедленно прекратился. В этом случае флаг bool для 'IsStarted' будет установлен в false, и вы не получите идентификатор процесса. Если вы действительно действительно нуждаетесь в этом, я бы предположил, что вам может понадобиться какой-то драйвер для подписки на вызов ядра ядра процесса. В противном случае вам может быть не повезло. В большинстве ситуаций вам не нужно действительно пытаться запустить процесс. – oleksii