"Система не может найти указанный файл" ошибка в процессе.Начать();

Я пытаюсь заставить процесс ответить как строку, чтобы я мог использовать ее в другом месте в моем коде, это решение, которое у меня есть до сих пор:

const string ex1 = @"C:ProjectsMyProgram.exe ";
      const string ex2 = @"C:ProjectsProgramXmlConfig.xml";


      Process process = new Process();
      process.StartInfo.WorkingDirectory = @"C:Projects";
      process.StartInfo.FileName = "MyProgram.exe ";
      process.StartInfo.Arguments = ex2;
      process.StartInfo.Password = new System.Security.SecureString();
      process.StartInfo.UseShellExecute = false;
      process.StartInfo.RedirectStandardOutput = true;  

      try
      {
          process.Start();
          StreamReader reader = process.StandardOutput;
          string output = reader.ReadToEnd();
      }
      catch (Exception exception)
      {
          AddComment(exception.ToString());
      }

но когда я запускаю это, я получаю:

"The system cannot find the file specified" error in process.Start(); without 
      process.StartInfo.UseShellExecute = false;
      process.StartInfo.RedirectStandardOutput = true;  

код работает нормально, но он просто открывает окно консоли, и весь ответ процесса-это trow, поэтому я не могу использовать его как строку.

кто-нибудь знает, почему я получаю эту ошибку или может есть другое решение моей проблемы?

2 ответов


Я подозреваю, что проблема в том, что имя файла, которое вы указываете, относится к вашему рабочему каталогу, и вы ожидаете Process.Start посмотреть там при запуске процесса - я не верю, что это работает, когда UseShellExecute и false. Попробуйте просто указать абсолютное имя файла процесса, который вы хотите запустить:

process.StartInfo.FileName = @"C:\Projects\MyProgram.exe";

обратите внимание, что я также удалил пробел из конца строки, которую вы назначали для FileName свойство-вполне возможно, что это было casuing тоже проблема.


для доступа System32 если вы пытаетесь запустить приложение x86 на x64, то вы должны использовать ключевое слово " Sysnative "вместо" System32 " в вашем имени файла.

например: вместо:

C:\Windows\System32\whoiscl.exe

должно быть:

C:\Windows\Sysnative\whoiscl.exe

надеюсь, это поможет кому-то