При выполнении другой программы из C # мне нужно самому анализировать «командную строку» из реестра?
Из реестра для данного типа файлов я получаю строку, содержащую что-то вроде этого:
"C:\Program Files\AppName\Executable.exe" /arg1 /arg2 /arg3
или иногда:
"C:\Program Files\AppName\Executable.exe" /arg1 /arg2 /arg3 "%1"
Чтобы я мог выполнить эту программу и передать имя файла в качестве параметра (который, как я знаю, он принимает), должен ли я сам анализировать эту строку, или есть класс времени выполнения, который сделает это для меня? Обратите внимание, что яЯ не спрашиваю об обработке разницы между двумя в отношении того, имеет ли он "% 1" или нет, но мне нужно отделить имя исполняемого файла, получить аргументы командной строки для него отдельно.
Я попытался просто добавить / ввести полный путь и имя файла, чтобы передать его в строку выше и передать весь shebang в Process.Start, но, конечно, он ожидает только имя файла в качестве единственного аргумента, поэтомут работа.
В принципе, все вышеперечисленное должно быть сделано следующим образом:
Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files\AppName\Executable.exe";
proc.StartInfo.Arguments = "/arg1 /arg2 /arg3 \"" + fileName + "\"";
proc.Start();
Я пытался с помощьюUseShellExecuteно это неТ помочь. Любые другие указатели?
Чтобы было ясно, я хочу это:
String commandPath = ReadFromRegistry();
String fullCommand = commandPath + " " + fileName; // assuming not %1
Process.Start(fullCommand); //