FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Evitar que cambien la hora del sistema
Hola foristas!!!
Tengo un programa de venta de ticket y no puedo permitir que el usuario pueda cambiar la hora del sistema ya que los ticket que se venden despues de una hora especifica no son validos.. Ahora, como puedo evitar que el usuario me cambie la hora de la computadora? Cuento con sus ayudas.. El programa esta hecho en Delphi 7 e instalado en Windows 98.. ElCherchu.. |
#2
|
||||
|
||||
Una solución aunque un poco chapucera, es:
Busca en el Directorio Windows\System Un archivo llamado TimeDate.Cpl Renombralo, por ejemplo AtimeDate.Cpl. Hasta que se le devuelve su nombre correcto estará inhabilitado el poder cambiar la fecha y hora del sistema. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Hola.
Busca una alternativa, por ejemplo, que la fecha y la hora la tome del servidor.
__________________
Rafita. |
#4
|
|||
|
|||
Gracias!!
Gracias por responder ya estoy probando cambiar el nombre el archivo TimeDate.cpl y ver que pasa.. ElCherchu... |
#5
|
||||
|
||||
Si solamente lo necesitas mientras funcione tu aplicación, puedes cambiar el nombre al arrancar y al salir restablecerlo.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
||||
|
||||
Otra solución es decirle al personal que como tengan cojjjjines de cambiar la pppreciosa fecha les das dos yoyas y los mandas de patitas a su casa....
(broma)
__________________
:) |
#7
|
|||
|
|||
que tal,
mira eso de renombrar el archivo datetime.cpl funciona, pero solo en windows, es decir que desde msdos se podria cambiar mediante el comando time. ademas con respecto a la respuesta de rafita, creo que seria la mas acertada pero si no dispones de una conexion (de cualquier tipo) a un servidor pues no podras hacerlo. Yo lo que te aconsejaria en caso de no contar con un servidor, seria que tu mismo sistema este validando la hora, es decir en una variable cada cierto tiempo registras la hora y si la ultima es menor a la anterior pues es que han atrasado el reloj o si la diferencia es mayor al tiempo que te tardas en revisar la hora pues te haz adelantado y en cualquier caso tomar medidas, ya sea que la reestablezcas o envies algun mensaje para informar lo ocurrido. Espero haberte servido de ayuda |
#8
|
||||
|
||||
Yo dudo bastante que un usuario de Windows sea capaz de salir al DOS y teclear una fecha u hora, pero suponiendo que dicho supuesto usuario fuera avanzado y conociera que puede modificar la hora desde el DOS, también se puede editar (con mucho cuidado, abstenerse manazas), el COMMAND.COM, intérprte de comando y cambiar por ejemplo TIME por SIME y DATE pos SATE y este supuesto usuario no podría hacer nada.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#9
|
||||
|
||||
Creo que se escapa una opción posible que suelen hacer los usuarios:
Salir del programa, cambiar la fecha, y despues entrar de nuevo. Con esto ya se ha cargado todo el planteamiento. Lo de verificar la hora puede llegar a ser bastante engorroso, sin mencionar que tendrías que controlar el cambio de hora autómatico de windows. La solución más correcta, a mi entender, es la que propone DarkByte, que el usuario no cambie la fecha, y si lo hace, es problema suyo, no tuyo. Si te lo ponen como requerimiento, entonces requiere tú una conexion permanente a internet para mantener la hora sincronizada. Saludos |
#10
|
||||
|
||||
Cita:
Es como si las autoridades dijeran, ¿para qué pongo policía?, si alguien roba un auto es su problema no nuestro. // Saludos |
#11
|
||||
|
||||
La soloción ha este problema ya lo habia dado en un hilo hace tiempo la idea es la siguiente:
Al entrar a la aplicacion toma la hora , fecha de la pc y tiempo trascurrido desde que inicio windows lo guardas en un login y en variables en este momento ya no te fijas la hora de la pc, lo que haces te fijas el tiempo trascurrido desde que arranco windows lo resta contra el tiempo que guardaste en la variable y lo suma a los datos de hora y fecha que tenia al iniciar la aplicacion, en caso que un cliente malicioso salga de la aplicacion, cambie la hora y entre de nuevo realiza validaciones con los datos guardados en el log y daras un cartel de alerta ante una incoherencia entre los datos nuevos y los que tenias registrados Última edición por acertij022 fecha: 22-09-2004 a las 14:59:37. |
#12
|
|||
|
|||
Cita:
|
#13
|
||||
|
||||
Creo, me parece, que un usuario 'normal' en windows no puede cambiar la hora del sistema.
La otra opción de coger la hora del servidor es la que se usa siempre en un entorno cliente/servidor, que sin importar la hora que tenga cada uno de los terminales/equipos/tpvs/pcs... conectados, lo que se hace es coger la fecha y hora del servidor de bases de datos, que se supone que es una máquina no accesible a ningún usuario. |
#14
|
||||
|
||||
Otra Opción sería crear un servicio / programa oculto que le notifiquen cuando el usuario cambie la hora del sistema. Muestras un mensaje en pantalla y si tu programa está funcionando, puedes sacar un mensaje en pantalla poniendo verde al usuario .
No he mirado si tambien lo detecta en el DOS, además podría reiniciar la máquina entrar en modo DOS y cambiar la fecha, pero bueno, esos temas se han tratado anteriormente. Edito: He puesto con comentarios el procedure Register, ya que no me gusta tenerlo en la paleta de componentes de Delphi, sino tenerlo en el Library Path y crearlo por código como si fuera un objeto más. Si quieres tenerlo en la paleta, pues quita los comentarios de dicho procedure. Aunque el código es antiguo, no disponía de él cuando se originó este hilo. Saludos y suerte.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 12-08-2006 a las 09:41:36. |
|
|
|