Executando outro programa a partir de C #, eu preciso analisar a "linha de comando" do registro eu mesmo?

No registro, para um determinado tipo de arquivo, recebo uma string contendo algo assim:

"C:\Program Files\AppName\Executable.exe" /arg1 /arg2 /arg3

ou às vezes:

"C:\Program Files\AppName\Executable.exe" /arg1 /arg2 /arg3 "%1"

Para que eu possa executar este programa e passar adiante um nome de arquivo como um parâmetro (que eu sei que ele aceita), eu mesmo tenho que analisar essa string, ou existe uma classe de tempo de execução que faça isso para mim? Note que eu não estou perguntando sobre como lidar com a diferença entre os dois em relação a se ele tem um "% 1" ou não, mas eu preciso dividir o nome do executável, obter os argumentos de linha de comando para ele separadamente.

Eu tentei apenas acrescentar / injetar o caminho completo e o nome do arquivo para passar adiante na string acima e passar todo o shebang para Process.Start, mas é claro que ele espera apenas o nome do arquivo como o argumento único, então isso não trabalhos.

Basicamente, o acima teria que ser feito assim manualmente:

Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files\AppName\Executable.exe";
proc.StartInfo.Arguments = "/arg1 /arg2 /arg3 \"" + fileName + "\"";
proc.Start();

Eu tentei usarUseShellExecute, mas isso não ajudou. Alguma outra ponteira?

Para ser claro, quero isso:

String commandPath = ReadFromRegistry();
String fullCommand = commandPath + " " + fileName; // assuming not %1
Process.Start(fullCommand); // <-- magic happens here

questionAnswers(4)

yourAnswerToTheQuestion