Chrono Mock

A RunAsDate alternative, with the parts that were missing

RunAsDate has been the answer to "run this program at a different date on Windows" for years, and it is a good one. This page is about where the two differ, and where RunAsDate is still the better pick.

Side by side

 RunAsDateChrono Mock
Runs one application at a fake dateyesyes
Leaves the system clock aloneyesyes
Time functions intercepted541 channels
Clock faster than real timenot offeredany whole multiplier
Freeze the clocknot offeredyes
Jump while the app is runningnot offeredforwards and backwards
Time zone for that process onlynot documentedyes, fixed offset
Child processes inherit the sessionnot documentedyes
Tells you whether it workednoverdict, per channel, with call counts
Electron and Chromium applicationsnot offeredseparate mechanism
Command line for CIyesyes, with exit codes and JSON
Source codefreeware, closedGPL-3.0
Sizeunder 40 KB1.6 MB CLI, 69 MB with the window
Old Windows versionsback to Windows 2000Windows 10 and 11

"Not documented" means the feature is not mentioned on the RunAsDate page. It is not a claim that the tool lacks it.

The difference that matters most

It is not the channel count. It is that RunAsDate tells you, honestly, in its own documentation, that it "will not affect applications that take the current date/time from another source" - and then leaves you to work out whether yours is one of them.

Chrono Mock treats that same sentence as something to measure. Every session ends with a verdict, the channels the application actually read with a count for each, the channels that were missed, and a warning when the application was seen opening a network connection before it ever asked the clock.

An application that looks time-shifted but is not is worse than one that never launched - it produces a passing test that means nothing. How the audit works →

Five functions, or 41 channels

RunAsDate intercepts GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime, NtQuerySystemTime and GetSystemTimePreciseAsFileTime. For a great many applications that is genuinely enough, because that is where the wall clock is read.

The rest of the surface is where date-dependent code tends to hide:

  • the time zone - four functions, plus the whole family that converts between zones, which is how a report lands on the wrong day
  • the elapsed-time axis - tick counts and unbiased interrupt time, which is what a trial countdown usually measures
  • sleeps and waits, so a delay is a delay on the session clock and not on the real one
  • timers - waitable, window, thread-pool and multimedia
  • process creation, so an installer's children run in the same session rather than in the present day

When RunAsDate is the better choice

Genuinely, and not rarely:

  • You need one date, at normal speed, right now. RunAsDate is under 40 KB, has no window to learn and has been doing exactly this for many years.
  • You are on an older Windows. RunAsDate goes back to Windows 2000. This tool targets Windows 10 and 11 and is not tested anywhere older.
  • Size matters. 40 KB against 1.6 MB for the command line, or 69 MB with the window, is not a close comparison.
  • You do not want a verdict. Measuring coverage means reading the result. If the test is throwaway, that is overhead you did not ask for.

The two also coexist. Nothing here stops you keeping RunAsDate for the quick case.

What neither of them is for

Both tools turn up in searches about extending trial periods. This one is not built for that, and no example, preset or page here will ever demonstrate it. Chrono Mock is for testing software you are responsible for - your own licence expiry, your own renewal logic, your own month-end report.

It is also the case least likely to work. Licence protection routinely reads time through routes chosen to be hard to intercept - the shared user-mode data page, direct system calls, a server - and a clock moving backwards is a condition such code is written to detect. The audit will tell you that it did not work, which is the honest answer rather than a useful one.

Try it