Como sugerencia te diría que pongas las rutas largas entre comillas dobles, y debes tener en cuenta que el archivo que recibirá como parámetro también puede estar en una ruta larga, por lo que también la encierro entre comillas:
Código:
reg.WriteString('','"C:\Documents and Settings\DANI\Mis documentos\delphi\Visor QR\visor.exe" "%1"');
Por otro lado, si copias la ruta completa, abres el menú de inicio \ ejecutar, pegas la ruta y luego la ejecutas... ¿Abre el programa?