Chrono Mock
LinguaItaliano

Esegui un'app Windows a qualsiasi data - senza toccare l'orologio di sistema

Porta l'orologio di una sola applicazione all'anno prossimo, congelalo, oppure accelerane il tempo perché una prova di 30 giorni scada mentre ti fai un caffè. Il resto della macchina mantiene l'ora reale: l'accesso al dominio, i certificati e tutti gli altri programmi continuano come sempre.

Poi ti dice se la sostituzione ha davvero funzionato.

Gratuito e open source, GPL-3.0 Portatile o installato Nessun diritto di amministratore per eseguirlo Non si connette mai a internet

Com'è una sessione

L'applicazione vede
2027-12-31
23:59:50
fuso della sessione -05:00
La macchina vede ancora
2026-09-04
18:12:33
fuso dell'host +02:00
Funziona - la sostituzione ha raggiunto questo processo
Canali temporali osservati fino a 44 · ciascuno con il conteggio delle chiamate
Il pannello di sessione di Chrono Mock. L'orologio dell'applicazione segna 2038-01-19 03:14:14 e quello reale accanto 2026-09-22 15:50:30, ciascuno con il proprio tempo trascorso. Sotto, le velocità vanno da x1 a x1440 con un pulsante Freeze, poi i salti relativi e un salto a una data digitata; nel piè di pagina un segno di spunta verde con la parola Works sta accanto a un pulsante rosso per fermare la sessione.
Una sessione in corso. L'applicazione è nel 2038, la macchina no, e il verdetto dice che la sostituzione l'ha raggiunta.

Perché esiste

Testare qualsiasi cosa dipenda dalla data significa spostare il tempo. Le due strade solite sono entrambe sbagliate.

Scadenza delle licenze, periodi di prova, rinnovi di abbonamento, validità dei certificati, durata dei token, chiusure di fine mese e di fine anno, maturazione degli interessi, promemoria.

Strada 1 - cambiare l'orologio di sistema

Rompe l'accesso al dominio e Kerberos, invalida i certificati TLS al punto che il browser smette di funzionare, confonde Windows Update e fa scrivere timestamp sbagliati a tutte le altre applicazioni della macchina. Su una macchina unita a un dominio, i criteri di gruppo di solito bloccano la modifica o la annullano dopo pochi minuti, quindi il test non è nemmeno ripetibile.

Strada 2 - aspettare

Che significa: non testare. I casi che dipendono dalla data vengono saltati, e «la licenza non scade mai» arriva al cliente.

Cosa fa

Un solo processo si muove nel tempo. Tutto il resto della macchina no.

Qualsiasi momento

Una data e un'ora precise, oppure un momento relativo - +30 days, -1 year.

Che scorre, congelato o accelerato

Velocità normale, un orologio fermo o un moltiplicatore intero. x1440 trasforma un giorno in un minuto.

Un fuso orario tutto suo

Uno scostamento fisso solo per quel processo, mentre il fuso del sistema resta esattamente dov'era.

I processi figlio vengono con lui

Gli installer e i launcher avviano processi figlio. Senza questo, il test copre solo metà di ciò che è stato eseguito.

Salti a sessione in corso

In avanti o indietro - compreso il salto all'indietro che fa un portatile dopo essersi risincronizzato con un server orario.

Anche Electron e Chromium

Con un meccanismo diverso, perché il loro orologio vive in un renderer isolato che l'iniezione non raggiunge.

Quello che nessun altro fa

Come fai a sapere che ha funzionato?

Con qualsiasi altro strumento, non lo sai. L'applicazione parte, mostra una data qualsiasi e tu dai per scontato che sia giusta. Ma può leggere l'orologio da un canale che lo strumento non ha mai intercettato - da un server, da un database, attraverso uno strato del runtime - e allora «il test è passato» non significa niente.

  • →Un verdetto prima che inizi il test vero: funziona / funziona in parte / non funziona
  • →Quali dei 44 canali temporali sono stati coperti e quante volte l'applicazione ha interrogato ciascuno
  • →Quali non lo sono stati - detto chiaramente, mai omesso
  • →Avvisi con le relative conseguenze: «questa applicazione legge l'ora dalla rete - la sostituzione locale potrebbe non bastare»

Come funziona l'audit delle fonti di tempo →

Due minuti con lo strumento

Una finestra per esplorare, una riga di comando per la CI. Lo stesso motore dietro entrambe.

# Eseguire un'applicazione come se fosse l'ultimo secondo del 2027
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# Vedere scadere una prova di 30 giorni mentre fai un caffè: x1440 è un giorno al minuto
chrono run "C:\apps\test.exe" --mode x1440

# Usare uno scenario con nome invece di una data e scrivere la prova in un file
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

Il calcolatore risponde all'altra metà del test sulle date - quale data usare:

$ 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)

Rispetto a quello che probabilmente usi

Come RunAsDate, con le parti che mancavano

RunAsDate intercetta cinque funzioni dell'orologio a muro e lo fa bene. Ecco in cosa i due differiscono - e la pagina completa dice anche dove RunAsDate resta la scelta migliore.

 RunAsDateChrono Mock
Esegue un'app a una data falsasìsì
Canali temporali intercettati544 (30 spostati, 14 contati)
Accelerare l'orologionosì
Fuso orario indipendentenon documentatosì
Segue i processi figlionon documentatosì
Ti dice se ha funzionatonosì, per canale
Codice sorgente disponibilefreeware, chiusoGPL-3.0

Il confronto completo, compreso dove RunAsDate vince →

Scaricalo

Decomprimi dove vuoi ed esegui, oppure installa l'.msi firmato per ogni account del computer. Eseguirlo non richiede diritti di amministratore e gli zip non scrivono nulla nel registro.