Rulează o aplicație Windows la orice dată - fără să atingi ceasul sistemului
Setează ceasul unei singure aplicații la anul viitor, oprește-l sau accelerează-l astfel încât o probă de 30 de zile să expire cât îți faci o cafea. Restul mașinii păstrează ora reală - autentificarea în domeniu, certificatele tale și toate celelalte programe merg mai departe ca de obicei.
Apoi îți spune dacă înlocuirea a funcționat cu adevărat.
Gratuit și open source, GPL-3.0 Portabil sau instalat Nu cere drepturi de administrator pentru rulare Nu comunică niciodată cu internetul
Cum arată o sesiune
23:59:50
18:12:33
De ce există
Testarea a orice depinde de dată înseamnă mutarea timpului. Ambele variante obișnuite sunt proaste.
Expirarea licenței, perioadele de probă, reînnoirea abonamentelor, valabilitatea certificatelor, durata de viață a token-urilor, rapoartele de final de lună și de an, calculul dobânzilor, memento-urile.
Varianta 1 - schimbi ceasul sistemului
Strică autentificarea în domeniu și Kerberos, invalidează certificatele TLS, așa că browserul nu mai funcționează, încurcă Windows Update și face ca toate celelalte aplicații de pe mașină să scrie marcaje de timp greșite. Pe o mașină din domeniu, politica de grup de obicei blochează schimbarea sau o anulează după câteva minute, deci testul nici măcar nu este repetabil.
Varianta 2 - aștepți
Ceea ce înseamnă: nu testezi. Cazurile care depind de dată sunt sărite, iar „licența nu expiră niciodată” ajunge la client.
Ce face
Un singur proces călătorește prin timp. Nimic altceva de pe mașină nu o face.
Orice moment
O dată și o oră anume, sau una relativă - +30 days, -1 year.
Curgând, oprit sau accelerat
Viteză normală, un ceas oprit sau un multiplicator întreg. x1440 face dintr-o zi
un minut.
Propriul fus orar
Un decalaj fix doar pentru acel proces, în timp ce fusul sistemului rămâne exact unde era.
Procesele copil vin la pachet
Instalatoarele și lansatoarele pornesc procese copil. Fără asta, testul acoperă doar jumătate din ce a rulat.
Salt în timpul sesiunii
Înainte sau înapoi - inclusiv saltul înapoi pe care îl face un laptop după ce se resincronizează cu un server de timp.
Și Electron, și Chromium
Printr-un mecanism diferit, pentru că ceasul lor trăiește într-un renderer izolat, unde injecția nu ajunge.
Partea pe care nu o face nimeni altcineva
De unde știi că a funcționat?
Cu orice alt instrument, nu știi. Aplicația pornește, afișează o dată oarecare și presupui. Dar ea poate citi ceasul printr-un canal pe care instrumentul nu l-a interceptat niciodată - de la un server, dintr-o bază de date, printr-un strat al runtime-ului - și atunci „testul a trecut” nu înseamnă absolut nimic.
- →Un verdict înainte să înceapă testul real: funcționează / funcționează parțial / nu funcționează
- →Care dintre cele 44 canale de timp au fost acoperite și de câte ori a interogat aplicația fiecare canal
- →Care canale nu au fost acoperite - spus pe față, niciodată omis
- →Avertismente cu consecințele atașate: „această aplicație citește ora din rețea - înlocuirea locală poate să nu fie suficientă”
Două minute cu el
O fereastră pentru explorat, o linie de comandă pentru CI. Același motor în spatele ambelor.
# Rulează o aplicație ca și cum ar fi ultima secundă din 2027 chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59 # Urmărește cum expiră o probă de 30 de zile cât îți faci o cafea: x1440 înseamnă o zi pe minut chrono run "C:\apps\test.exe" --mode x1440 # Folosește un scenariu cu nume în loc de o dată și scrie dovezile într-un fișier chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt
Calculatorul răspunde celeilalte jumătăți a testării cu date - ce dată să folosești:
$ 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 lands on: at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)
Comparat cu ce folosești probabil acum
Ca RunAsDate, cu părțile care lipseau
RunAsDate interceptează cinci funcții de ceas și o face bine. Iată în ce diferă cele două - iar pagina completă spune și unde RunAsDate rămâne alegerea mai bună.
| RunAsDate | Chrono Mock | |
|---|---|---|
| Rulează o aplicație la o dată falsă | da | da |
| Canale de timp interceptate | 5 | 44 (30 decalate, 14 numărate) |
| Accelerează ceasul | nu | da |
| Fus orar independent | nedocumentat | da |
| Urmărește procesele copil | nedocumentat | da |
| Îți spune dacă a funcționat | nu | da, pe fiecare canal |
| Cod sursă disponibil | freeware, închis | GPL-3.0 |
Obține-l
Dezarhivează oriunde și rulează, sau instalează .msi-ul semnat pentru fiecare
cont de pe calculator. Rularea nu cere drepturi de administrator, iar arhivele zip nu scriu
nimic în registru.