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
23:59:50
18:12:33
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ć"
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.
| RunAsDate | Chrono Mock | |
|---|---|---|
| Uruchamia aplikację z fałszywą datą | tak | tak |
| Przechwycone kanały czasu | 5 | 41 |
| Przyspieszanie zegara | nie | tak |
| Niezależna strefa czasowa | nieudokumentowane | tak |
| Podąża za procesami potomnymi | nieudokumentowane | tak |
| Mówi, czy zadziałało | nie | tak, per kanał |
| Dostępny kod źródłowy | freeware, zamknięty | GPL-3.0 |
Pobierz
Rozpakuj gdziekolwiek i uruchom. Bez instalatora, bez wpisów w rejestrze, bez uprawnień administratora.