Chrono Mock

Uruchom aplikację Windows z dowolną datą - bez ruszania zegara systemowego

Ustaw zegar jednej aplikacji na przyszły rok, zamroź go albo przyspiesz tak, żeby 30-dniowa wersja próbna wygasła, zanim zrobisz kawę. Reszta komputera zachowuje prawdziwy czas - logowanie do domeny, certyfikaty i wszystkie inne programy działają normalnie.

A potem narzędzie mówi, czy podmiana naprawdę zadziałała.

Darmowe i otwarte, GPL-3.0 Bez instalatora Bez uprawnień administratora Nigdy nie łączy się z siecią

Jak wygląda sesja

Aplikacja widzi
2027-12-31
23:59:50
strefa sesji -05:00
Komputer nadal widzi
2026-09-04
18:12:33
strefa hosta +02:00
Działa - podmiana dotarła do tego procesu
Objęte kanały czasu 26 z 41 · z liczbą wywołań
Panel sesji Chrono Mock. Zegar aplikacji pokazuje 2038-01-19 03:24:27, prawdziwy zegar 2026-09-04 17:57:30, zielony znacznik mówi Works, a pod spodem widać listę 26 objętych kanałów czasu z liczbą wywołań przy każdym.
Sesja w biegu. Aplikacja jest w 2038 roku, komputer nie, a werdykt mówi, że podmiana do niej dotarła.

Po co to jest

Testowanie czegokolwiek zależnego od daty wymaga przesunięcia czasu. Obie typowe drogi są złe.

Wygasanie licencji, okresy próbne, odnowienia subskrypcji, ważność certyfikatów, czas życia tokenów, raporty na koniec miesiąca i roku, naliczanie odsetek, przypomnienia.

Droga 1 - zmiana zegara systemowego

Psuje logowanie do domeny i Kerberos, unieważnia certyfikaty TLS, więc przeglądarka przestaje działać, dezorientuje Windows Update i sprawia, że każdy inny program na komputerze zapisuje błędne znaczniki czasu. Na maszynie w domenie zasady grupy zwykle blokują taką zmianę albo cofają ją po kilku minutach, więc test nie jest nawet powtarzalny.

Droga 2 - czekanie

Czyli: nie testujemy tego. Przypadki zależne od daty wypadają z planu, a do klienta trafia „licencja nigdy nie wygasa".

Co potrafi

Jeden proces przesuwa się w czasie. Cała reszta komputera nie.

Dowolny moment

Konkretna data i godzina albo względna - +30 dni, -1 rok.

Płynny, zamrożony albo przyspieszony

Normalne tempo, zatrzymany zegar albo całkowity mnożnik. x1440 zamienia dobę w minutę.

Własna strefa czasowa

Stały offset tylko dla tego procesu, podczas gdy strefa systemu zostaje dokładnie tam, gdzie była.

Procesy potomne też

Instalatory i launchery uruchamiają dzieci. Bez tego test obejmuje połowę tego, co się wykonało.

Skok w trakcie sesji

Do przodu albo do tyłu - łącznie ze skokiem wstecz, jaki robi laptop po synchronizacji z serwerem czasu.

Electron i Chromium również

Innym mechanizmem, bo ich zegar żyje w piaskowanym rendererze, do którego wstrzyknięcie nie sięga.

Część, której nie robi nikt inny

Skąd wiesz, że zadziałało?

Przy każdym innym narzędziu - nie wiesz. Aplikacja startuje, pokazuje jakąś datę, a ty zakładasz. Tyle że może czytać zegar kanałem, którego narzędzie nigdy nie przechwyciło - z serwera, z bazy danych, przez warstwę środowiska uruchomieniowego - i wtedy „test przeszedł" nie znaczy zupełnie nic.

  • Werdykt, zanim zacznie się właściwy test: działa / działa częściowo / nie działa
  • Które z 41 kanałów czasu zostały objęte i ile razy aplikacja odpytała każdy z nich
  • Które kanały nie zostały objęte - powiedziane wprost, nigdy pominięte
  • Ostrzeżenia z konsekwencją: „ta aplikacja czyta czas z sieci - lokalna podmiana może nie wystarczyć"

Jak działa audyt źródeł czasu →

Dwie minuty z narzędziem

Okno do eksploracji, wiersz poleceń do CI. Za obydwoma ten sam silnik.

# Uruchom aplikację tak, jakby była ostatnia sekunda 2027 roku
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# Patrz, jak 30-dniowa wersja próbna wygasa przy kawie: x1440 to doba na minutę
chrono run "C:\apps\test.exe" --mode x1440

# Zamiast daty użyj nazwanego scenariusza i zapisz dowód do pliku
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

Kalkulator odpowiada na drugą połowę testowania dat - której daty użyć:

$ 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 tests:
    at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)

W porównaniu z tym, czego pewnie używasz

Jak RunAsDate, tylko z tym, czego brakowało

RunAsDate przechwytuje pięć funkcji zegara ściennego i robi to dobrze. Tu widać, czym się te dwa narzędzia różnią - a pełna strona mówi też, kiedy RunAsDate jest nadal lepszym wyborem.

 RunAsDateChrono Mock
Uruchamia aplikację z fałszywą datątaktak
Przechwycone kanały czasu541
Przyspieszanie zegaranietak
Niezależna strefa czasowanieudokumentowanetak
Podąża za procesami potomnyminieudokumentowanetak
Mówi, czy zadziałałonietak, per kanał
Dostępny kod źródłowyfreeware, zamkniętyGPL-3.0

Pełne porównanie, razem z tym, w czym RunAsDate wygrywa →

Pobierz

Rozpakuj gdziekolwiek i uruchom. Bez instalatora, bez wpisów w rejestrze, bez uprawnień administratora.