При выполнении другой программы из 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); // <-- magic happens here

Ответы на вопрос(4)

Ваш ответ на вопрос