Chrono Mock
TaalNederlands

Een RunAsDate-alternatief, met de onderdelen die ontbraken

RunAsDate is al jaren het antwoord op “draai dit programma op een andere datum onder Windows”, en een goed antwoord. Deze pagina gaat over waar de twee verschillen en waar RunAsDate nog steeds de betere keuze is.

Naast elkaar

 RunAsDateChrono Mock
Draait één applicatie op een valse datumjaja
Laat de systeemklok met rustjaja
Onderschepte tijdfuncties544 (30 verschoven, 14 geteld)
Klok sneller dan echte tijdniet aangebodenelke gehele vermenigvuldiger
De klok bevriezenja, standaardja
Springen terwijl de app draaitalleen terug naar de echte datum, na een vast aantal secondenvooruit en achteruit, naar elk moment
Tijdzone alleen voor dat procesniet gedocumenteerdja, vaste offset
Kindprocessen erven de sessieniet gedocumenteerdja
Koppelen aan een toepassing die al draaitja, sinds versie 1.40nee - het start de toepassing zelf
Meerdere toepassingen met verschillende datums tegelijkjanee - één sessie tegelijk
Zegt of het gewerkt heeftneeoordeel, per kanaal, met aantal aanroepen
Electron- en Chromium-applicatiesniet gedocumenteerdapart mechanisme
Opdrachtregel voor CIjaja, met afsluitcodes en JSON
Broncodefreeware, geslotenGPL-3.0
Grootte47 KB download, 57 KB voor 64-bit~2,4 MB opdrachtregel, ~70 MB met het venster
Oude Windows-versiesterug tot Windows 2000Windows 10 en 11

“Niet gedocumenteerd” betekent dat de functie niet op de RunAsDate-pagina wordt genoemd. Het is geen bewering dat het gereedschap haar mist. De klok van RunAsDate staat stil zolang de optie Move the time forward according to the real time niet aan staat.

Het verschil dat het meest telt

Het is niet het aantal kanalen. Het is dat RunAsDate in zijn eigen documentatie eerlijk zegt dat het “geen invloed heeft op applicaties die de huidige datum en tijd uit een andere bron halen” - en je vervolgens laat uitzoeken of de jouwe er een is.

Chrono Mock behandelt diezelfde zin als iets om te meten. Elke sessie eindigt met een oordeel, de kanalen die de applicatie werkelijk las met een aantal per kanaal, de gemiste kanalen, en een waarschuwing als de applicatie werd gezien terwijl ze een netwerkverbinding opende voordat ze ooit de klok had gevraagd.

Een applicatie die tijdverschoven lijkt maar het niet is, is erger dan een die nooit startte - ze levert een geslaagde test op die niets betekent. Hoe de audit werkt →

Vijf functies, of 44 kanalen

RunAsDate onderschept GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime, NtQuerySystemTime en GetSystemTimePreciseAsFileTime. Voor heel veel applicaties is dat werkelijk genoeg, want daar wordt de wandklok gelezen.

De rest van het oppervlak is waar datumafhankelijke code zich graag verstopt:

  • de tijdzone - de twee functies die hem melden, plus de zes die tussen zones omrekenen, waardoor een rapport op de verkeerde dag belandt
  • de as van de verstreken tijd - tickteller en onbevooroordeelde interrupttijd, wat een proefperiode-aftelling meestal meet
  • pauzes, zodat een vertraging een vertraging is op de sessieklok en niet op de echte, en wachten op objecten, die worden geteld en hun echte lengte houden
  • timers - wachtbare, venster-, threadpool- en multimediatimers
  • het aanmaken van processen, zodat de kinderen van een installatieprogramma in dezelfde sessie draaien in plaats van op de dag van vandaag
  • netwerkverbindingen, geteld als teken dat de tijd van een server kan komen

Van de 44 komen er 30 op de sessieklok. De overige 14 worden alleen geteld en blijven echt, zodat het rapport ze noemt zonder te beweren dat ze verschoven zijn. De wandklok en de tijdzone worden in elke sessie verschoven. De as van de verstreken tijd en het wachten worden gevolgd als je daarom vraagt met --scale-duration, de teller met hoge resolutie met --scale-qpc.

Wanneer RunAsDate de betere keuze is

Echt, en niet zelden:

  • Je hebt één datum nodig, op normale snelheid, nu meteen. RunAsDate is een download van minder dan 60 KB, heeft geen venster om te leren en doet precies dit al vele jaren.
  • Je zit op een ouder Windows. RunAsDate gaat terug tot Windows 2000. Dit gereedschap richt zich op Windows 10 en 11 en is nergens ouder getest.
  • Grootte telt. Een download van 47 KB tegenover ~2,4 MB voor de opdrachtregel, of ~70 MB met het venster, is geen nipte vergelijking.
  • Je wilt geen oordeel. De dekking meten betekent het resultaat lezen. Als de test een wegwerptest is, is dat overhead waar je niet om vroeg.
  • De toepassing draait al. RunAsDate kan zich sinds versie 1.40 aan een draaiend proces koppelen. Chrono Mock start de toepassing zelf, dus een toepassing die niet opnieuw kan starten valt buiten bereik.
  • Je wilt meerdere toepassingen met verschillende datums tegelijk. RunAsDate geeft elk een eigen datum. Chrono Mock draait één sessie tegelijk.

De twee kunnen ook naast elkaar bestaan. Niets hier houdt je tegen RunAsDate te bewaren voor het snelle geval.

Waar geen van beide voor bedoeld is

Beide gereedschappen duiken op in zoekopdrachten over het verlengen van proefperiodes. Dit is er niet voor gebouwd, en geen enkel voorbeeld, scenario of pagina hier zal dat ooit laten zien. Chrono Mock is bedoeld om software te testen waarvoor je verantwoordelijk bent - je eigen licentieverloop, je eigen verlengingslogica, je eigen maandrapportage.

Het is ook het geval dat het minst waarschijnlijk werkt. Licentiebeveiliging leest de tijd routinematig via routes die gekozen zijn om moeilijk te onderscheppen te zijn - de gedeelde gegevenspagina in gebruikersmodus, directe systeemaanroepen, een server - en een klok die achteruit loopt is een toestand die zulke code geschreven is om te detecteren. De audit vertelt je dat het niet werkte, wat het eerlijke antwoord is en geen nuttig antwoord.

Probeer het