reloj - no puedo cambiar fecha y hora en windows 7
¿Cómo puedo ejecutar una aplicación Delphi Win32 con una hora local específica? (1)
Tengo un programa Delphi que comienza a comportarse mal cuando se ejecuta a medianoche. Para hacer un caso de prueba reproducible, tengo que cambiar la hora local del sistema a algo antes de la medianoche, ejecutar el programa por un tiempo, verificar si hay un error y volver a encenderlo. Si bien esto seguramente se puede hacer de forma manual, tengo problemas para automatizar eso para las pruebas.
¿Hay alguna posibilidad de darle a una aplicación un tiempo especial cuando se ejecuta sin cambiar la hora del sistema? Esto puede ser desde fuera del programa o incluso dentro.
Aunque esta podría ser una pregunta general de Windows, la etiqueté con Delphi, ya que cualquier solución que funcione con Delphi está bien, mientras que otras con otros entornos de programación son inútiles en este caso.
Hay una herramienta existente para eso llamada RunAsDate :
Descripción
RunAsDate es una pequeña utilidad que le permite ejecutar un programa en la fecha y hora que especifique. Esta utilidad no cambia la fecha y hora actuales del sistema de su computadora, pero solo inyecta la fecha / hora que especifique en la aplicación deseada. Puede ejecutar múltiples aplicaciones simultáneamente, cada aplicación funciona con fecha y hora diferentes, mientras que la fecha / hora real de su sistema continúa ejecutándose normalmente.
Como funciona ?
RunAsDate intercepta las llamadas a la API del kernel que devuelve la fecha y hora actual (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime) y reemplaza la fecha / hora actual con la fecha / hora que especifique.
Requisitos del sistema
RunAsDate funciona en Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008, Windows Vista, Windows 7 y Windows 8. Las versiones anteriores de Windows no son compatibles. También está disponible la versión x64 en una descarga separada, para usar con aplicaciones x64.