Когда вы используете это:
string strCmdText="/C C:\\Program Files\\MetaTrader 5\\terminal64.exe /config:C:\\Users\\vguer036\\AppData\\Roaming\\MetaQuotes\\Terminal\\D0E8209F77C8CF37AD8BF550E51FF075\\config\\common.ini";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);
, вы пытаетесь запустить приложение CMD.exe, которое, в свою очередь, вы указываете выполнить конкретное приложение. Однако из-за пробелов CMD пытается выполнить команду C:\\Program
с параметрами Files\\MetaTrader
, 5\\terminal64.exe
et c. Вот откуда приходит ваше сообщение об ошибке.
Один из способов решить эту проблему - добавить дополнительные кавычки вокруг имени файла (как прокомментировала Dour High Arch):
string strCmdText=@"/C ""C:\Program Files\MetaTrader 5\terminal64.exe"" ""/config:C:\Users\vguer036\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\config\common.ini""";
Обратите внимание на двойные кавычки, которые должны использовать буквенную кавычку внутри буквального строкового литерала (@"..."
).
Но таким образом вы по-прежнему выполняете одно приложение (CMD.exe) для запуска другого (терминал64.exe). Почему бы не запустить этот терминал 64 напрямую?
System.Diagnostics.Process.Start(
@"C:\Program Files\MetaTrader 5\terminal64.exe",
@"/config:C:\Users\vguer036\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\config\common.ini");
Вам следует поэкспериментировать, чтобы узнать, нужны ли вам дополнительные кавычки вокруг названия этого приложения, но я так не думаю.