Chrono Mock
LangueFrançais

Lancez une application Windows à n'importe quelle date - sans toucher à l'horloge système

Réglez l'horloge d'une seule application sur l'année prochaine, figez-la, ou accélérez-la pour qu'un essai de 30 jours expire le temps de faire un café. Le reste de la machine garde l'heure réelle : votre connexion au domaine, vos certificats et tous les autres programmes continuent comme d'habitude.

Ensuite, il vous dit si la substitution a vraiment fonctionné.

Gratuit et open source, GPL-3.0 Portable ou installé Aucun droit d'administrateur pour l'exécuter Ne se connecte jamais à Internet

À quoi ressemble une session

L'application voit
2027-12-31
23:59:50
fuseau de la session -05:00
La machine voit toujours
2026-09-04
18:12:33
fuseau de l'hôte +02:00
Fonctionne - la substitution a atteint ce processus
Canaux de temps surveillés jusqu'à 44 · chacun avec son nombre d'appels
Le panneau de session de Chrono Mock. L'horloge de l'application indique 2038-01-19 03:14:14 et l'horloge réelle à côté 2026-09-22 15:50:30, chacune avec son propre temps écoulé. En dessous, les vitesses vont de x1 à x1440 avec un bouton Freeze, puis les sauts relatifs et un saut vers une date saisie ; dans le pied de page, une coche verte accompagne le mot Works à côté d'un bouton rouge pour arrêter la session.
Une session en cours. L'application est en 2038, la machine non, et le verdict dit que la substitution l'a atteinte.

Pourquoi cet outil existe

Tester tout ce qui dépend d'une date oblige à déplacer le temps. Les deux solutions habituelles sont mauvaises.

Expiration de licence, périodes d'essai, renouvellements d'abonnement, validité des certificats, durée de vie des jetons, clôtures de fin de mois et d'année, calcul d'intérêts, rappels.

Solution 1 - changer l'horloge système

Cela casse l'ouverture de session sur le domaine et Kerberos, invalide les certificats TLS au point que le navigateur ne marche plus, perturbe Windows Update et fait écrire de mauvais horodatages à toutes les autres applications de la machine. Sur une machine jointe à un domaine, la stratégie de groupe bloque généralement le changement ou l'annule quelques minutes plus tard, et le test n'est donc même pas reproductible.

Solution 2 - attendre

Ce qui veut dire : ne pas tester. Les cas qui dépendent de la date sont sautés, et « la licence n'expire jamais » part chez le client.

Ce qu'il fait

Un seul processus voyage dans le temps. Le reste de la machine, non.

N'importe quel moment

Une date et une heure précises, ou un moment relatif - +30 days, -1 year.

Qui s'écoule, figé ou accéléré

Vitesse normale, horloge arrêtée, ou multiplicateur entier. x1440 fait d'une journée une minute.

Son propre fuseau horaire

Un décalage fixe pour ce seul processus, pendant que le fuseau du système reste exactement où il était.

Les processus enfants suivent

Les installateurs et les lanceurs créent des processus enfants. Sans cela, le test ne couvre que la moitié de ce qui s'est exécuté.

Des sauts en pleine session

En avant ou en arrière - y compris le saut en arrière que fait un portable après s'être resynchronisé avec un serveur de temps.

Electron et Chromium aussi

Par un autre mécanisme, car leur horloge vit dans un moteur de rendu isolé où l'injection n'arrive pas.

Ce que personne d'autre ne fait

Comment savoir si cela a fonctionné ?

Avec tous les autres outils, vous ne le savez pas. L'application démarre, affiche une date, et vous supposez. Mais elle peut lire l'horloge par un canal que l'outil n'a jamais intercepté - depuis un serveur, une base de données, une couche d'exécution - et alors « le test est passé » ne veut plus rien dire.

  • →Un verdict avant le début du vrai test : fonctionne / fonctionne partiellement / ne fonctionne pas
  • →Lesquels des 44 canaux de temps ont été couverts, et combien de fois l'application a interrogé chacun
  • →Lesquels ne l'ont pas été - dits clairement, jamais omis
  • →Des avertissements avec leurs conséquences : « cette application lit l'heure sur le réseau - la substitution locale peut ne pas suffire »

Comment fonctionne l'audit des sources de temps →

Deux minutes pour l'essayer

Une fenêtre pour explorer, une ligne de commande pour la CI. Le même moteur derrière les deux.

# Exécuter une application comme si c'était la dernière seconde de 2027
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# Voir expirer un essai de 30 jours le temps d'un café : x1440, c'est un jour par minute
chrono run "C:\apps\test.exe" --mode x1440

# Utiliser un scénario nommé plutôt qu'une date, et écrire la preuve dans un fichier
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

Le calculateur répond à l'autre moitié du test de dates - quelle date utiliser :

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

Comparé à ce que vous utilisez probablement

Comme RunAsDate, avec les parties qui manquaient

RunAsDate intercepte cinq fonctions d'horloge murale et le fait bien. Voici où les deux diffèrent - et la page complète dit aussi dans quels cas RunAsDate reste le meilleur choix.

 RunAsDateChrono Mock
Lance une appli à une fausse dateouioui
Canaux de temps interceptés544 (30 décalés, 14 comptés)
Accélérer l'horlogenonoui
Fuseau horaire indépendantnon documentéoui
Suit les processus enfantsnon documentéoui
Dit si cela a fonctionnénonoui, par canal
Code source disponiblefreeware, code ferméGPL-3.0

La comparaison complète, y compris là où RunAsDate gagne →

L'obtenir

Décompressez n'importe où et lancez, ou installez le .msi signé pour chaque compte de la machine. L'exécution n'exige aucun droit d'administrateur, et les archives zip n'écrivent rien dans le registre.