Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2013
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Ejecutar programa en el Inicio con Múltiples sesiones y/o servidor

Hola !

De nuevo tengo que solicitar vuestra ayuda para ver cual sería la mejor solución a este asunto :

Necesito ejecutar un programa cuando se inicie una máquina. La máquina puede ser local, un servidor, una máquina virtual.

Hasta ahora, grababa una clave en el registro bajo HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run. Hasta aquí correcto, ya que cada vez que se reinicie el equipo se va a ejecutar el programa como es debido.

Cuando he empezado a utilizar múltiples conexiones de escritorio remoto a un servidor o servidor virtual, me doy cuenta que el inicio de sesión de cada una de esas conexiones remotas, me inicia también el programa, y consecuentemente (al necesitar una única instancia), da error con cada nuevo inicio de sesión de escritorio remoto.

Si pusiera la clave en el registro en vez de en HKLM en HKCU (HKEY_CURRENT_USER), entiendo entonces que en caso de reiniciarse la máquina, hasta que no se haga algún logín con nombre de usuario, no sería posible ejecutar ese programa para el usuario que haga el login. No me vale, porque además el programa se tiene que ejecutar independientemente del usuario que se conecte, y además iniciarse incluso sin que haga login ningún usuario.

Siguiente problema que se me plantea : En una máquina virtual, puede que no se conecte todavía ningún usuario, pero el programa se debe de ejecutar.

Además, si se termina una sesión de usuario, se cerrarán todos los programas iniciados por ese usuario, por lo tanto, ligar la ejecución del programa a un usuario creo que en ningún caso es válida.

Conclusión : Es mejor ejecutar el programa como un servicio de Windows (tendría además que investigar porque nunca lo he hecho) ? Si no lo hiciera como servicio, como asegurarme de que el programa se ejecute al iniciar la máquina y no se vuelva a ejecutar con cada nueva sesión de escritorio remoto ?

Gracias como siempre por vuestros comentarios.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 12-01-2013
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Añado algo más al asunto anteriormente expuesto :

La aplicación principal, que se inicia por cada usuario (incluidos los usuarios que utilizan escritorio remoto), hace un chequeo periódico para ver si el programa que se tiene que ejecutar al principio está activo o no. Si no lo estuviera, o estuviera 'colgado' (... cosas que pasan), comprueba si el programa está activo (en el caso de que esté colgado) en la máquina actual, manda un TaskKill (mediante TerminateProcess), y vuelve a ejecutar de nuevo el programa con un ShellExecute.

Cómo podría compaginar la comprobación y nuevo 'lanzamiento' si los usuarios son usuarios de escritorio remoto, es decir, como podría un usuario de escritorio remoto realizar un TaskKill del programa que se ejecutó al iniciar la máquina, y volver a relanzar el programa 'fuera' de esa sesión remota, en el 'hilo principal'.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 12-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
gluglu,

Cita:
Empezado por gluglu
Necesito ejecutar un programa cuando se inicie una máquina. La máquina puede ser local, un servidor, una máquina virtual.
Cita:
Empezado por gluglu
grababa una clave en el registro bajo HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run. Hasta aquí correcto, ya que cada vez que se reinicie el equipo se va a ejecutar el programa
Cita:
Empezado por gluglu
Cuando he empezado a utilizar múltiples conexiones de escritorio remoto a un servidor o servidor virtual, me doy cuenta que el inicio de sesión de cada una de esas conexiones remotas, me inicia también el programa, y consecuentemente (al necesitar una única instancia), da error con cada nuevo inicio de sesión de escritorio remoto.
Cita:
Empezado por gluglu
En una máquina virtual, puede que no se conecte todavía ningún usuario, pero el programa se debe de ejecutar.
Cita:
Empezado por gluglu
Conclusión : Es mejor ejecutar el programa como un servicio de Windows (tendría además que investigar porque nunca lo he hecho)
Revisa estos links:
Cita:
Cómo desarrollar un servicio de Windows con Borland Delphi
http://www.ajpdsoft.com/modules.php?...4#.UPHBnfJWVIQ

Tutorial for making a Service Application using Delphi
http://delphi.about.com/gi/o.htm?zi=...ce/service.htm

Creating a Windows Service in Delphi
http://delphi.about.com/gi/o.htm?zi=...ice-in-Delphi/
Cita:
Empezado por gluglu
Si no lo hiciera como servicio, como asegurarme de que el programa se ejecute al iniciar la máquina y no se vuelva a ejecutar con cada nueva sesión de escritorio remoto ?
Revisa este link:
Cita:
Evitar multiples instancias de nuestra aplicacion
http://www.clubdelphi.com/foros/show...les+instancias
Quizás te resulte interesante revisar este link como referencia:
Cita:
Want to start your application at boot and run it 24x7 as a Windows Service?
http://www.coretechnologies.com/prod...FQXNOgodNFcALw
Espero sea útil

Nelson.
Responder Con Cita
  #4  
Antiguo 13-01-2013
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Gracias !! ... empezaré a revisar todos los links !
__________________
Piensa siempre en positivo !
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar programa al inicio de Windows 7 Drakyto Varios 5 27-07-2012 09:25:04
problema con las multiples sesiones de la unidad de Roman :( ivantj24 Varios 28 28-10-2011 19:08:00
Error al cerrar el programa server con IntraWeb 10 si hay sesiones activas fcios Internet 0 08-03-2010 15:06:25
Parametros al inicio de programa sisgeorge C++ Builder 6 24-06-2008 19:13:07
Ejecutar programa al inicio antes inicio sesion hibero Varios 0 07-02-2007 20:52:44


La franja horaria es GMT +2. Ahora son las 08:29:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi