Chrono Mock
TaalNederlands

Draai een Windows-app op elke datum - zonder de systeemklok aan te raken

Zet de klok van één applicatie op volgend jaar, bevries hem, of versnel hem zodat een proefperiode van 30 dagen verloopt terwijl je koffie zet. De rest van de machine houdt de echte tijd: je domeinaanmelding, je certificaten en alle andere programma's gaan gewoon door.

Daarna vertelt het je of de vervanging echt gewerkt heeft.

Gratis en open source, GPL-3.0 Draagbaar of geïnstalleerd Geen beheerdersrechten om te draaien Maakt nooit verbinding met internet

Zo ziet een sessie eruit

De applicatie ziet
2027-12-31
23:59:50
sessiezone -05:00
De machine ziet nog steeds
2026-09-04
18:12:33
hostzone +02:00
Werkt - de vervanging heeft dit proces bereikt
Bewaakte tijdkanalen tot 44 · elk met een aantal aanroepen
Het sessiepaneel van Chrono Mock. De klok van de applicatie staat op 2038-01-19 03:14:14 en de echte klok ernaast op 2026-09-22 15:50:30, elk met zijn eigen verstreken tijd. Daaronder lopen de snelheden van x1 tot x1440 met een knop Freeze, dan de relatieve sprongen en een sprong naar een ingetypte datum; in de voettekst staat een groen vinkje met het woord Works naast een rode knop om de sessie te stoppen.
Een lopende sessie. De applicatie zit in 2038, de machine niet, en het oordeel zegt dat de vervanging haar heeft bereikt.

Waarom dit bestaat

Alles testen wat van de datum afhangt betekent de tijd verplaatsen. Beide gebruikelijke opties zijn slecht.

Verlopende licenties, proefperiodes, abonnementsverlengingen, geldigheid van certificaten, levensduur van tokens, maand- en jaarafsluitingen, renteberekening, herinneringen.

Optie 1 - de systeemklok veranderen

Het breekt domeinaanmelding en Kerberos, maakt TLS-certificaten ongeldig zodat de browser niet meer werkt, brengt Windows Update in de war en laat elke andere applicatie op de machine verkeerde tijdstempels schrijven. Op een machine in een domein blokkeert het groepsbeleid de wijziging meestal of draait die na enkele minuten terug, dus de test is niet eens herhaalbaar.

Optie 2 - wachten

Wat betekent: niet testen. De datumafhankelijke gevallen worden overgeslagen, en “de licentie verloopt nooit” gaat naar de klant.

Wat het doet

Eén proces beweegt door de tijd. De rest van de machine niet.

Elk moment

Een specifieke datum en tijd, of een relatieve - +30 days, -1 year.

Lopend, bevroren of versneld

Normale snelheid, een stilgezette klok of een geheel getal als vermenigvuldiger. x1440 maakt van een dag een minuut.

Een eigen tijdzone

Een vaste offset alleen voor dat proces, terwijl de systeemzone precies blijft waar hij was.

Kindprocessen gaan mee

Installatieprogramma's en launchers starten kindprocessen. Zonder dat dekt de test maar de helft van wat er draaide.

Springen tijdens de sessie

Vooruit of achteruit - ook de sprong terug die een laptop maakt na synchronisatie met een tijdserver.

Ook Electron en Chromium

Via een ander mechanisme, omdat hun klok in een afgeschermde renderer leeft waar injectie niet bij komt.

Wat niemand anders doet

Hoe weet je dat het gewerkt heeft?

Bij elk ander gereedschap weet je het niet. De applicatie start, toont een datum, en jij gaat ervan uit dat het klopt. Maar ze kan de klok lezen via een kanaal dat het gereedschap nooit heeft onderschept - van een server, uit een database, via een runtimelaag - en dan betekent “de test is geslaagd” helemaal niets.

  • →Een oordeel voordat de echte test begint: werkt / werkt gedeeltelijk / werkt niet
  • →Welke van de 44 tijdkanalen gedekt waren en hoe vaak de applicatie elk ervan heeft opgevraagd
  • →Welke kanalen niet gedekt waren - duidelijk benoemd, nooit weggelaten
  • →Waarschuwingen met de gevolgen erbij: “deze applicatie leest de tijd van het netwerk - lokale vervanging is mogelijk niet genoeg”

Hoe de audit van tijdbronnen werkt →

Twee minuten ermee

Een venster om te verkennen, een opdrachtregel voor CI. Dezelfde engine achter beide.

# Een applicatie draaien alsof het de laatste seconde van 2027 is
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# Een proefperiode van 30 dagen zien verlopen terwijl je koffie zet: x1440 is een dag per minuut
chrono run "C:\apps\test.exe" --mode x1440

# Een benoemd scenario gebruiken in plaats van een datum en het bewijs in een bestand schrijven
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

De calculator beantwoordt de andere helft van datumtesten - welke datum je moet gebruiken:

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

Vergeleken met wat je waarschijnlijk gebruikt

Zoals RunAsDate, met de onderdelen die ontbraken

RunAsDate onderschept vijf wandklokfuncties en doet dat goed. Hier zie je waar de twee verschillen - en de volledige pagina zegt ook waar RunAsDate nog steeds de betere keuze is.

 RunAsDateChrono Mock
Draait een app op een valse datumjaja
Onderschepte tijdkanalen544 (30 verschoven, 14 geteld)
De klok versnellenneeja
Onafhankelijke tijdzoneniet gedocumenteerdja
Volgt kindprocessenniet gedocumenteerdja
Zegt of het gewerkt heeftneeja, per kanaal
Broncode beschikbaarfreeware, geslotenGPL-3.0

De volledige vergelijking, inclusief waar RunAsDate wint →

Haal het binnen

Pak ergens uit en start het, of installeer de ondertekende .msi voor elk account op de machine. Draaien vraagt geen beheerdersrechten en de zip-bestanden schrijven niets naar het register.