Обычный подход к устранению подобных проблем заключается в использовании отладчика.Скопируйте / вставьте это в метод Main () исходного файла для app.exe:
System.Diagnostics.Debugger.Break();
Как только app.exe запустится, вы получите диалоговое окно, в котором вы можете выбратьотладчик.Оттуда у вас не должно быть особых проблем с выяснением, почему это не работает.
Если у вас нет исходного кода для app.exe, вам придется обдумать это.Использование относительного пути, такого как «app.exe» или «temp.txt», всегда проблематично.Классический режим сбоя использует OpenFileDialog, чтобы позволить пользователю выбрать значение _patchpath.Если для свойства этого диалога RestoreDirectory не установлено значение True, то каталог по умолчанию для вашей программы изменится на путь файла исправления.И ни app.exe, ни temp.txt больше не могут быть четвертыми.
Защитите себя от этого, защитив свои программы:
var myPath = System.Reflection.Assembly.GetEntryAssembly().Location;
var homeDir = System.IO.Path.GetDirectoryName(myPath);
var appPath = System.IO.Path.Combine(homeDir, "app.exe");
var tempPath = System.IO.Path.Combine(homeDir, "temp.txt");
ProcessStartInfo P = new ProcessStartInfo(appPath);
P.WorkingDirectory = homeDir;
P.Arguments = string.Format("\"{0}\" \"{1}\"", tempPath, _patchpath);
// etc...