Ejecuta una app de Windows en cualquier fecha - sin tocar el reloj del sistema
Pon el reloj de una sola aplicación en el año que viene, congélalo, o acelera el tiempo para que una prueba de 30 días caduque mientras te preparas un café. El resto del equipo conserva la hora real: tu inicio de sesión de dominio, tus certificados y todos los demás programas siguen como siempre.
Después te dice si la sustitución funcionó de verdad.
Gratis y de código abierto, GPL-3.0 Portátil o instalado Sin permisos de administrador para ejecutarlo Nunca se conecta a internet
Así es una sesión
23:59:50
18:12:33
Por qué existe
Probar cualquier cosa que dependa de la fecha exige mover el tiempo. Las dos opciones habituales son malas.
Caducidad de licencias, periodos de prueba, renovaciones de suscripción, validez de certificados, vida útil de los tokens, cierres de fin de mes y de año, devengo de intereses, recordatorios.
Opción 1 - cambiar el reloj del sistema
Rompe el inicio de sesión de dominio y Kerberos, invalida los certificados TLS hasta el punto de que el navegador deja de funcionar, confunde a Windows Update y hace que todas las demás aplicaciones del equipo escriban marcas de tiempo erróneas. En un equipo unido a un dominio, la directiva de grupo suele bloquear el cambio o revertirlo a los pocos minutos, así que la prueba ni siquiera es repetible.
Opción 2 - esperar
Lo que significa: no probar. Los casos que dependen de la fecha se omiten, y «la licencia nunca caduca» llega al cliente.
Qué hace
Un proceso se mueve por el tiempo. Todo lo demás del equipo, no.
Cualquier momento
Una fecha y hora concretas, o una relativa - +30 days, -1 year.
Corriendo, congelado o acelerado
Velocidad normal, un reloj detenido o un multiplicador entero. x1440 convierte un
día en un minuto.
Su propia zona horaria
Un desfase fijo solo para ese proceso, mientras la zona del sistema sigue exactamente donde estaba.
Los procesos hijos se suman
Los instaladores y lanzadores crean procesos hijos. Sin eso, la prueba cubre la mitad de lo que se ejecutó.
Saltos en plena sesión
Hacia delante o hacia atrás - incluido el salto atrás que da un portátil al resincronizarse con un servidor de hora.
También Electron y Chromium
Mediante otro mecanismo, porque su reloj vive en un renderizador aislado al que la inyección no llega.
Lo que nadie más hace
¿Cómo sabes que funcionó?
Con cualquier otra herramienta, no lo sabes. La aplicación arranca, muestra una fecha y tú das por hecho que está bien. Pero puede leer el reloj por un canal que la herramienta nunca interceptó - desde un servidor, desde una base de datos, a través de una capa del entorno de ejecución - y entonces «la prueba pasó» no significa nada.
- →Un veredicto antes de que empiece la prueba de verdad: funciona / funciona parcialmente / no funciona
- →Cuáles de los 44 canales de tiempo quedaron cubiertos y cuántas veces consultó la aplicación cada uno
- →Cuáles no lo estuvieron - dicho con claridad, nunca omitido
- →Avisos con sus consecuencias: «esta aplicación lee la hora de la red - puede que la sustitución local no baste»
Dos minutos con ella
Una ventana para explorar, una línea de comandos para CI. El mismo motor detrás de ambas.
# Ejecutar una aplicación como si fuera el último segundo de 2027 chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59 # Ver caducar una prueba de 30 días mientras haces un café: x1440 es un día por minuto chrono run "C:\apps\test.exe" --mode x1440 # Usar un escenario con nombre en lugar de una fecha y escribir la evidencia en un archivo chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt
La calculadora responde a la otra mitad de las pruebas de fechas - qué fecha usar:
$ chrono calc --preset year-2038 --zone +00:00 Chrono Mock - date calculator preset: year-2038 - 2038 boundary explains: Does the app survive the 32-bit Unix time boundary (2038-01-19T03:14:07Z)? base: 2038-01-19T03:14:07 result: 2038-01-19T03:14:07 formats: ISO date 2038-01-19 ISO datetime 2038-01-19T03:14:07+00:00 US 01/19/2038 PL 19.01.2038 epoch (s) 2147483647 epoch (ms) 2147483647000 FILETIME 137919572470000000 RFC 1123 Tue, 19 Jan 2038 03:14:07 GMT ... what this date lands on: at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)
Comparado con lo que probablemente usas
Como RunAsDate, con las partes que faltaban
RunAsDate intercepta cinco funciones del reloj de pared y lo hace bien. Esto es en lo que se diferencian - y la página completa también dice dónde RunAsDate sigue siendo la mejor opción.
| RunAsDate | Chrono Mock | |
|---|---|---|
| Ejecuta una app con una fecha falsa | sí | sí |
| Canales de tiempo interceptados | 5 | 44 (30 desplazados, 14 contados) |
| Acelerar el reloj | no | sí |
| Zona horaria independiente | no documentado | sí |
| Sigue a los procesos hijos | no documentado | sí |
| Te dice si funcionó | no | sí, por canal |
| Código fuente disponible | freeware, cerrado | GPL-3.0 |
Consíguela
Descomprime en cualquier sitio y ejecuta, o instala el .msi firmado para todas
las cuentas del equipo. Ejecutarlo no requiere permisos de administrador y los zip no escriben
nada en el registro.