Wykonując inny program z C #, czy muszę sam analizować „wiersz poleceń” z rejestru?

Z rejestru dla danego typu pliku otrzymuję ciąg zawierający coś takiego:

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

lub czasami:

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

Aby wykonać ten program i przekazać nazwę pliku jako parametr (który, jak wiem, akceptuje), czy muszę sam analizować ten ciąg znaków, czy też istnieje klasa wykonawcza, która zrobi to za mnie? Zauważ, że nie pytam o obsługę różnicy między tymi dwoma pod względem tego, czy ma on „% 1”, czy nie, ale raczej muszę oddzielić nazwę pliku wykonywalnego, osobno uzyskać argumenty wiersza poleceń.

Próbowałem po prostu dodać / wstrzyknąć pełną ścieżkę i nazwę pliku, aby przekazać go do powyższego ciągu i przekazać cały shebang do Process.Start, ale oczywiście oczekuje tylko nazwy pliku jako pojedynczego argumentu, więc nie praca.

Zasadniczo powyższe czynności należy wykonać w ten sposób ręcznie:

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

Próbowałem użyćUseShellExecute, ale to nie pomogło. Jakieś inne wskaźniki?

Żeby było jasne, chcę tego:

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

questionAnswers(4)

yourAnswerToTheQuestion