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

Напишем следующий код:

Process iStartProcess = new Process(); // новый процесс
iStartProcess.StartInfo.FileName = @"C:\program.exe"; // путь к запускаемому файлу
iStartProcess.StartInfo.Arguments = " -i 192.168.10.12 -p 10568"; // эта строка указывается, если программа запускается с параметрами (здесь указан пример, для наглядности)
iStartProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // эту строку указываем, если хотим запустить программу в скрытом виде
iStartProcess.Start(); // запускаем программу
iStartProcess.WaitForExit(120000); // эту строку указываем, если нам надо будет ждать завершения программы определённое время, пример: 2 мин. (указано в миллисекундах - 2 мин. * 60 сек. * 1000 м.сек.)

Все комментарии есть в коде, поэтому считаю излишним дополнительно комментировать написанный выше код.

Для работы кода достаточно подключить «System.Diagnostics»:

using System.Diagnostics;