Chrono Mock
TaalNederlands

De systeemdatum wijzigen om een applicatie te testen

Het is de oudste truc die er is: de Windows-klok op de datum zetten die je wilt testen, het programma draaien en de klok terugzetten. Het werkt - en zolang de klok verzet is, verzet hij ook al het andere op de machine.

Wat er echt meeverschuift met de klok

De systeemklok is niet van alleen het programma dat je test. Elk proces, elke service en elk netwerkgesprek op de machine leest dezelfde, dus een wijziging voor één test is een wijziging voor allemaal.

Wat de klok leestWat er gebeurt als je hem verzet
Domeinaanmelding en gedeelde mappenKerberos accepteert standaard een klokverschil van vijf minuten. Daarboven worden de tickets geweigerd en mislukt het aanmelden of het openen van een share.
Certificaten en HTTPSOf een certificaat geldig is, wordt bepaald aan de hand van de klok. Zet hem voorbij de einddatum van een certificaat en elke verbinding die daarop steunt wordt geweigerd als verlopen; zet hem ver genoeg terug en het certificaat is nog niet geldig.
De Windows Time-serviceEen machine in een domein haalt de tijd bij een domeincontroller, en standaard corrigeert de service de klok ongeacht de grootte van het verschil. De datum die je instelde kan ongedaan worden gemaakt terwijl je nog test.
Alles wat een tijd vastlegtBestanden, logs, databaserijen en verzonden e-mails die ontstaan terwijl de klok verzet is, dragen de testdatum en houden die nadat je de klok hebt teruggezet.
Software die de laatste gezien datum onthoudtSommige programma's lezen een klok die terugloopt als knoeien - en dat is precies wat er gebeurt als je de echte datum herstelt.

Hoe verder de datum, hoe meer hiervan je tegenkomt. Een machine die op 2038 staat, ziet elk certificaat dat vandaag is uitgegeven als verlopen. 2038 testen zonder dat →

Het vraagt ook een recht dat de meeste accounts niet hebben: de systeemtijd wijzigen is een beheerdersrecht, en op een beheerde machine is het vaak niet aan jou.

Wanneer de klok verzetten het juiste antwoord is

Een virtuele machine die niemand anders gebruikt, met haar eigen kloksynchronisatie uitgeschakeld, is een prima testbank. Je gooit hem daarna weg, dus niets wat hij heeft vastgelegd doet ertoe. Als je er een hebt en de test één datum betreft, is het het simpelste dat werkt.

De problemen beginnen wanneer het de machine is waarop je werkt, die in het domein, of een machine waarop tegelijk iets draait dat niets mag merken.

Verzet in plaats daarvan de klok van één programma

De verschoven tijd is zichtbaar voor één proces en de kinderen die het start. Je domeinaanmelding, je certificaten en Windows Update zien hem nooit, dus niets uit de tabel hierboven verschuift - en er is niets om achteraf terug te zetten.

# De applicatie ziet 31 december 2027, 23:59:50. Al het andere houdt de echte datum.
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:50

# Tien minuten voor middernacht starten en op x60 snelheid draaien - de jaarwisseling komt in tien seconden
chrono run "C:\apps\test.exe" --at 2027-12-31T23:50:00 --mode x60

Of een voor één programma verschoven datum het ook echt bereikte, is niet iets om aan te nemen. Elke sessie eindigt met een oordeel en de lijst van tijdkanalen die het programma werkelijk las. Hoe weet je dat het gewerkt heeft →

Wat dit niet vervangt

  • Een programma dat een server naar de tijd vraagt, ligt buiten het bereik van een lokale vervanging. De sessie meldt het als ze ziet dat het programma een netwerkverbinding opent, in plaats van je te laten aannemen dat de test geslaagd is.
  • Het systeem zelf testen - een service die reageert op een wijziging van de echte klok, een geplande taak, hoe Windows zich rond een klokwijziging gedraagt - kent geen alternatief voor het verzetten van de klok, op een machine die je kunt missen.

Probeer het