Hola¡¡¡
Perdonenme por haber respondido tan tarde, pero he estado probando cosas y no he podido antes.
La idea que me dio Lepe funciona bien salvo cuando el lanzador se encuentra esperando la finalización del programa prinicipal (en WaitForSingleObject) y el usuario pulsa logoff. En este caso windows no puede cerrar el lanzador puesto que se encuentra ocupado y aparece la pantalla de End Now o Cerrar ahora. Si le pulso al botón,el programa efectivamente se cierra pero el código del evento OncloseQuery, donde almaceno la hora y fecha de salida del usuario, no se ejecuta.
Por cierto les informo, por si a alguien le puede interesar, que al usar la función
CreateProcessWithLogonW aparte de dejar de funcionar la función
ExitWindowsEx también lo hace el evento
OnCloseQuery del programa lanzado. Por ese motivo yo he tenido que guardar los datos de salida del usuario desde el lanzador, pero como ven no consigo hacerlo
.