Запустите внешнее приложение без расширения .exe - PullRequest
16 голосов
/ 08 августа 2010

Я знаю, как запустить внешнее приложение в C # System.Diagnostics.Process.Start(executableName);, но что, если приложение, которое я хочу запустить, имеет расширение, которое не распознается Windows как расширение исполняемого файла.В моем случае это application.bin.

Ответы [ 2 ]

30 голосов
/ 08 августа 2010

Ключ должен установить для свойства Process.StartInfo.UseShellExecute значение false до начала процесса, например ::

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = @"c:\tmp\test.bin";
p.StartInfo.UseShellExecute  = false;
p.Start();

Это запустит процесс напрямую: вместо прохождения логики оболочки «давайте попробуем выяснить исполняемый файл для указанного расширения файла» файл будет считаться самим исполняемым.

Другой синтаксис для достижения того же результата может быть:

var processStartInfo = new ProcessStartInfo
{
    FileName = @"c:\tmp\test.bin",
    UseShellExecute = false
};
Process.Start(processStartInfo);
3 голосов
/ 10 января 2015

И продолжить с @yelnic. Попробуйте использовать cmd.exe /C myapp, я нашел это весьма полезным, когда я хочу немного больше из Process.Start().

using (Process process = Process.Start("cmd.exe") 
{
   // `cmd` variable can contain your executable without an `exe` extension
   process.Arguments = String.Format("/C \"{0} {1}\"", cmd, String.Join(" ", args));
   process.UseShellExecute  = false;
   process.RedirectStandardOutput = true;
   process.Start();
   process.WaitForExit();
   output = process.StandardOutput.ReadToEnd();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...