Faire tourner l'horloge d'une appli plus vite
Un essai de 30 jours met 30 jours à expirer, à moins de pouvoir déplacer le temps. Le conseil habituel est d'avancer l'horloge système, ce qui exige des droits d'administrateur et entraîne avec lui tous les autres programmes de la machine. Ceci déplace un seul processus.
À quelle vitesse
Choisissez un multiplicateur entier. L'horloge de l'application avance autant de fois plus vite que la réelle, à partir du moment où la session démarre.
| Multiplicateur | Une minute réelle devient | Utile pour |
|---|---|---|
x60 | une heure | les tâches horaires, les délais d'expiration de session, la durée de vie des jetons |
x1440 | un jour | les bascules quotidiennes, un essai de 30 jours en une demi-heure |
x43200 | un essai de 30 jours | voir tout l'essai se terminer pendant que vous lisez ceci |
x525600 | un an | les renouvellements annuels, l'expiration des certificats |
x1000000 | environ 1,9 an | le plafond |
# Partir de l'heure réelle actuelle, et avancer d'un jour par minute chrono run "C:\apps\test.exe" --mode x1440 # Partir d'une date choisie et accélérer à partir de là chrono run "C:\apps\test.exe" --at 2027-12-01T09:00:00 --mode x1440 # Tenir l'horloge complètement immobile à la place chrono run "C:\apps\test.exe" --mode frozen
Ce qui piège les gens : il y a deux horloges
Accélérer l'horloge murale - ce que renvoient DateTime.Now et ses
équivalents - n'accélère pas à elle seule un compte à rebours. Ce sont deux
questions différentes qu'une application peut poser au système d'exploitation, et beaucoup de
logiciels mesurent « trente jours » avec la seconde plutôt qu'avec la première.
L'axe des durées - compteurs de ticks, attentes, mises en veille et minuteurs - est donc un interrupteur distinct :
--scale-durationmet aussi les compteurs de ticks, les mises en sommeil et les minuteurs sur l'horloge de la session, tandis que les attentes sur objet sont comptées et gardent leur durée réelle. Sans lui,x1440fait filer le calendrier pendant qu'un minuteur de cinq secondes dure toujours cinq vraies secondes - seul un minuteur réglé sur une date et une heure suit l'horloge de la session dans chaque session.--scale-qpcmet en plus à l'échelle le compteur haute résolution. C'est là que Python 3.13+monotonic, .NETStopwatchet JavananoTimelisent le temps écoulé, et il est désactivé par défaut parce que sa mise à l'échelle a déstabilisé le rendu lors des tests.
Si le multiplicateur semble ne rien faire à un compte à rebours, c'est presque toujours la raison.
# Une appli minuteur : accélérer le calendrier ET les comptes à rebours chrono run "C:\apps\Timer.exe" --mode x60 --scale-duration # Une appli Python ou .NET qui mesure le temps écoulé sur le compteur haute résolution chrono run "C:\apps\Job.exe" --mode x60 --scale-duration --scale-qpc
Changer de vitesse sans redémarrer
Le multiplicateur peut changer en pleine session, et l'horloge est réancrée plutôt que sautée, si bien qu'elle ne recule jamais quand la vitesse baisse. Vous pouvez aussi faire sauter l'horloge d'un coup - en avant, ou en arrière comme le fait un portable après s'être resynchronisé avec un serveur de temps, ce qui est le cas qui casse tout ce qui mesure le temps écoulé sans garde-fou.
# Tourner à x60, puis passer à x1440 au bout de deux secondes chrono run "C:\apps\test.exe" --mode x60 --set-after 2:1440 # Tourner, puis faire sauter l'horloge à un moment choisi au bout de cinq secondes chrono run "C:\apps\test.exe" --jump-after 5:2028-01-01T00:00:00
Ce qu'il ne fera pas
- Il ne touche pas à l'horloge système. C'est le but, pas une limite - mais cela signifie que tout ce qui lit l'heure sur un serveur, une base de données ou une autre machine n'est pas affecté, et l'audit vous le dit quand cela arrive.
- Un saut change ce que l'application voit, pas le moment où elle se réveille. Les mises en sommeil et les minuteurs déjà confiés au noyau gardent la durée qu'ils ont reçue au moment où ils ont été réglés. La plupart des applications interrogent l'horloge, donc les sauts fonctionnent en pratique - mais pas pour toutes.
- Il ne ralentit pas le temps. Les multiplicateurs sont des nombres entiers de un et plus, plus une horloge figée à zéro.
Que quoi que ce soit ait atteint votre application n'est pas une chose à supposer. La session le dit →