Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Controlar / Vigilar Usuario que ejecutan el programa (https://www.clubdelphi.com/foros/showthread.php?t=88376)

Delphitest 28-05-2015 08:33:52

Controlar / Vigilar Usuario que ejecutan el programa
 
Buenos días,

estoy haciendo un programa a ratos desde casa con delphi xe5 y access y cuando hago cambios lo subo por control remoto al servidor para evitar tener que acercarme a la oficina.

Como tengo que borrar el .exe y meter el nuevo siempre necesito asegurarme que nadie lo está ejecutando.

Teniendo en cuenta que el programa está en un servidor y es ahí donde accedo por control remoto.

¿Es posible saber si alguien está ejecutando el programa (y saber qué usuario es)?

En caso de que sea posible, si alguien tiene el programa en ejecución ¿se podría cerrar?

Gracias por vuestra ayuda

Un abrazo

Casimiro Notevi 28-05-2015 09:58:53

Creo que si alguien lo está usando, no podrás borrarlo.

duilioisola 28-05-2015 12:25:43

Puedes tener una tabla de usuarios y su última fecha y hora de conexión.
  1. En la aplicación pones un timer cada 1 minuto (o lo que consideres apropiado).
  2. Cada vez que se lance el timer, debería guardar la fecha y hora en el campo de la tabla de ese usuario.
Si quies saber quién está conectado, podrías pedir un listado de esa tabla con fecha y hora posterior a 1 o 2 minutos.



También puedes poner una campo PERMITIR_CONEXION en la tabla de usuarios y un timer.
  1. Cada 1 minuto haces que la aplicación mire si el campo está habilitado.
  2. Si está deshabilidato cierras la aplicación.
Si queires desconectar a los usuarios solo debes desactivar ese campo.

Casimiro Notevi 28-05-2015 12:32:58

Con firebird puedes consultar cuántos usuarios hay conectados a la base de datos, no sé si con access se puede.

Neftali [Germán.Estévez] 28-05-2015 13:01:34

Lo que se suele usar en estos casos (como primera solución sencilla) es lo que se llama una lanzadera.
Es un programa que lo único que hace es ejecutar el tuyo (MIPROG.EXE), por ejemplo a partir de un parámetro a un fichero .INI.

Cuando hay una actualización grabas la nueva versión de tu programa (con un nombre distinto o un directorio distinto) y lo único que tienes que hacer es cambiar las opciones de la lanzadera.

A medida que los usuairo vayan saliendo y volviendo a ejecutar la lanzadera, sin darse cuenta estarán ejecutando la nueva versión.

Manuel 28-05-2015 15:16:54

lo que hago yo es renombrar el programa actual en el servidor (lo deja hacer, pero no borrar), después subo la nueva versión, eso si que no tendrán la nueva versión hasta que ejecuten el programa nuevamente.

newtron 28-05-2015 17:35:32

Hola.

Yo lo que hago es un poco bestia pero bastante efectivo. En un timer del formulario principal chequeo la existencia de un fichero determinado en la carpeta del programa, si existe directamente cierro el programa. De esta manera cuando necesites "echar" a todo el mundo fuera solo tienes que crear ese fichero y todos los programas abiertos se cerrarán al momento, luego lo borras o lo renombras, actualizas tu prograna y a volar.

Saludos

fjcg02 28-05-2015 21:29:59

En un srv windows se puede ver qué usuarios tienen abierto un fichero. Además, si eres administrador, puede echarles. Después podrías copiar tu nuevo ejecutable.

Si no recuerdo mal, se hace desde donde se administran los discos, los servicios, los usuarios, etc. pero no lo recuerdo bien y no tengo ningún srv a mano.

Saludos

movorack 29-05-2015 00:31:41

CTRL + SHIFT + ESC > Procesos > "Mostrar procesos de todos los usuarios"


La franja horaria es GMT +2. Ahora son las 11:13:09.

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