Al ejecutar otro programa desde C #, ¿necesito analizar la "línea de comando" del registro yo mismo?

Desde el registro, para un tipo de archivo dado, obtengo una cadena que contiene algo como esto:

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

o algunas veces:

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

Para poder ejecutar este programa y pasar un nombre de archivo como parámetro (que sé que acepta), ¿tengo que analizar esta cadena yo mismo o hay una clase de tiempo de ejecución que hará esto por mí? Tenga en cuenta que no estoy preguntando sobre cómo manejar la diferencia entre los dos con respecto a si tiene un "% 1" o no, sino que necesito separar el nombre del ejecutable, obtener los argumentos de la línea de comandos por separado.

Intenté simplemente agregar / inyectar la ruta completa y el nombre del archivo para pasar a lo largo de la cadena de arriba y pasar todo el shebang a Process.Start, pero, por supuesto, solo espera el nombre del archivo como único argumento, por lo que no es así. trabajo.

Básicamente, lo anterior debería hacerse de forma manual:

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

Traté de usarUseShellExecute, pero eso no ayudó. ¿Algún otro puntero?

Para ser claro, quiero esto:

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta