Si el archivo es un ejecutable, basta hacer un "CreateProcess". Si el archivo no es un ejecutable, tienes que hacer un "ShellExecuteEx" con el "verbo" (lpVerb) correcto. Usualmente, "open" será suficiente. Con esto dejas que Windows decida qué programa debe abrir el archivo en particular.