"Система не может найти указанный файл" ошибка в процессе.Начать();
Я пытаюсь заставить процесс ответить как строку, чтобы я мог использовать ее в другом месте в моем коде, это решение, которое у меня есть до сих пор:
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
надеюсь, это поможет кому-то