¿Cómo ejecuto archivos en C #?

-Editar- me siento como una idiota. Tenía la sensación de que algo como la respuesta a continuación funcionaría, pero no vi ningún resultado de Google similar al de las respuestas a continuación. Así que cuando vi este código complejo, pensé que tenía que ser así.

Busqué y encontré estoWindows: Listar y lanzar aplicaciones asociadas con una extensión Sin embargo, no respondió a mi pregunta. Con los ajustes a continuación se me ocurrió lo siguiente. Sin embargo, se queda atascado en los archivos de imagen. Los archivos de texto se ejecutan bien

Actualizaré este código pronto para tener en cuenta las rutas de las aplicaciones con espacios, sin embargo, no entiendo por qué no se inician los archivos de imagen.

static void launchFile(string fn)
{
    //majority was taken from
    //https://stackoverflow.com/questions/24954/windows-list-and-launch-applications-associated-with-an-extension
    const string extPathTemplate = @"HKEY_CLASSES_ROOT\{0}";
    const string cmdPathTemplate = @"HKEY_CLASSES_ROOT\{0}\shell\open\command";

    string ext = Path.GetExtension(fn);

    var extPath = string.Format(extPathTemplate, ext);

    var docName = Registry.GetValue(extPath, string.Empty, string.Empty) as string;
    if (!string.IsNullOrEmpty(docName))
    {
        // 2. Find out which command is associated with our extension
        var associatedCmdPath = string.Format(cmdPathTemplate, docName);
        var associatedCmd = Registry.GetValue(associatedCmdPath, string.Empty, string.Empty) as string;

        if (!string.IsNullOrEmpty(associatedCmd))
        {
            //Console.WriteLine("\"{0}\" command is associated with {1} extension", associatedCmd, ext);
            var p = new Process();
            p.StartInfo.FileName = associatedCmd.Split(' ')[0];
            string s2 = associatedCmd.Substring(p.StartInfo.FileName.Length + 1);
            s2 = s2.Replace("%1", string.Format("\"{0}\"", fn));
            p.StartInfo.Arguments = s2;//string.Format("\"{0}\"", fn);
            p.Start();
        }
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta