Hola,
Llama la atención que usas una ruta absoluta para comprobar si el archivo existe, pero, a la hora de ejecutarlo sólo proporcionas una ruta "relativa" (el nombre del archivo). Tal vez por eso no funciona, simplemente. Sea como sea igual te interesa conocer el resultado de la función
"ShellExecute()", para actuar en consecuencia.