Chrono Mock
भाषाहिन्दी

सिस्टम घड़ी को छुए बिना, Windows ऐप को किसी भी तारीख़ पर चलाएँ

किसी एक ऐप्लिकेशन की घड़ी को अगले साल पर सेट करें, उसे रोक दें, या उसे इतना तेज़ कर दें कि आप कॉफ़ी बनाएँ और 30 दिन का ट्रायल ख़त्म हो जाए। बाकी मशीन असली समय पर ही रहती है - आपका डोमेन लॉगऑन, आपके सर्टिफ़िकेट और बाकी हर प्रोग्राम सामान्य रूप से चलते रहते हैं।

फिर यह आपको बताता है कि बदलाव सचमुच काम किया या नहीं।

मुफ़्त और ओपन सोर्स, GPL-3.0 पोर्टेबल या इंस्टॉल किया हुआ चलाने के लिए एडमिनिस्ट्रेटर अधिकार नहीं चाहिए कभी इंटरनेट से संपर्क नहीं करता

सत्र कैसा दिखता है

ऐप्लिकेशन को यह दिखता है
2027-12-31
23:59:50
सत्र का ज़ोन -05:00
मशीन को अब भी यह दिखता है
2026-09-04
18:12:33
होस्ट का ज़ोन +02:00
काम करता है - बदलाव इस प्रोसेस तक पहुँच गया
निगरानी वाले समय चैनल 44 तक · हर एक की कॉल गिनती के साथ
Chrono Mock का सत्र पैनल। ऐप्लिकेशन की घड़ी 2038-01-19 03:14:14 दिखा रही है और उसके पास की असली घड़ी 2026-09-22 15:50:30, दोनों के अपने बीते हुए समय के साथ। नीचे x1 से x1440 तक की गतियाँ और एक Freeze बटन हैं, फिर सापेक्ष छलाँगें और टाइप की गई तारीख़ पर छलाँग, और फ़ुटर में Works के बगल में हरा टिक और लाल Stop session बटन है।
चल रहा एक सत्र। ऐप्लिकेशन 2038 में है, मशीन नहीं, और निर्णय बताता है कि बदलाव उस तक पहुँचा।

यह क्यों है

तारीख़ पर निर्भर किसी भी चीज़ को परखने के लिए समय को आगे-पीछे करना पड़ता है। दोनों आम तरीके ख़राब हैं।

लाइसेंस की समाप्ति, ट्रायल अवधि, सब्सक्रिप्शन का नवीनीकरण, सर्टिफ़िकेट की वैधता, टोकन की आयु, माह-अंत और वर्ष-अंत की रिपोर्टें, ब्याज की गणना, रिमाइंडर।

विकल्प 1 - सिस्टम घड़ी बदलना

यह डोमेन लॉगऑन और Kerberos को तोड़ देता है, TLS सर्टिफ़िकेट अमान्य कर देता है जिससे ब्राउज़र काम करना बंद कर देता है, Windows Update को उलझा देता है, और मशीन के हर दूसरे ऐप से ग़लत टाइमस्टैम्प लिखवाता है। डोमेन से जुड़ी मशीन पर ग्रुप पॉलिसी आम तौर पर इस बदलाव को रोक देती है या कुछ मिनट बाद वापस पलट देती है, इसलिए परीक्षण दोहराया भी नहीं जा सकता।

विकल्प 2 - इंतज़ार करना

यानी: परखना ही नहीं। तो तारीख़ पर निर्भर मामले छूट जाते हैं, और “लाइसेंस कभी ख़त्म नहीं होता” वाला संस्करण ग्राहक तक पहुँच जाता है।

यह क्या करता है

एक प्रोसेस समय में आगे बढ़ती है। मशीन की बाकी हर चीज़ नहीं बढ़ती।

कोई भी क्षण

कोई ख़ास तारीख़ और समय, या सापेक्ष समय - +30 days, -1 year।

बहता, रुका हुआ या तेज़

सामान्य गति, रुकी हुई घड़ी, या पूर्ण संख्या का गुणक। x1440 एक दिन को एक मिनट में बदल देता है।

अपना टाइम ज़ोन

सिर्फ़ उसी प्रोसेस के लिए एक स्थिर ऑफ़सेट, जबकि सिस्टम ज़ोन ठीक वहीं रहता है जहाँ था।

चाइल्ड प्रोसेस साथ चलते हैं

इंस्टॉलर और लॉन्चर चाइल्ड प्रोसेस शुरू करते हैं। इसके बिना परीक्षण उसका सिर्फ़ आधा हिस्सा कवर करता है जो चला।

सत्र के बीच में छलाँग

आगे या पीछे - उस पीछे की छलाँग समेत जो लैपटॉप टाइम सर्वर से दोबारा सिंक होने पर लगाता है।

Electron और Chromium भी

एक अलग तरीके से, क्योंकि उनकी घड़ी एक सैंडबॉक्स्ड रेंडरर में रहती है जहाँ इंजेक्शन नहीं पहुँचता।

वह हिस्सा जो कोई और नहीं करता

आपको कैसे पता चलेगा कि यह काम किया?

बाकी हर टूल के साथ आपको पता नहीं चलता। ऐप शुरू होता है, कोई तारीख़ दिखाता है, और आप मान लेते हैं। लेकिन वह घड़ी ऐसे चैनल से पढ़ सकता है जिसे टूल ने कभी रोका ही नहीं - किसी सर्वर से, किसी डेटाबेस से, किसी रनटाइम लेयर से - और तब “परीक्षण पास हुआ” का कोई मतलब नहीं रह जाता।

  • →असली परीक्षण शुरू होने से पहले एक निर्णय: काम करता है / आंशिक रूप से काम करता है / काम नहीं करता
  • →44 समय चैनलों में से कौन-से कवर हुए, और ऐप ने हर एक को कितनी बार पूछा
  • →कौन-से चैनल कवर नहीं हुए - साफ़ शब्दों में बताया जाता है, कभी छोड़ा नहीं जाता
  • →नतीजों के साथ चेतावनियाँ: “यह ऐप नेटवर्क से समय पढ़ता है - स्थानीय बदलाव काफ़ी न हो सकता है”

समय स्रोत ऑडिट कैसे काम करता है →

इसके साथ दो मिनट

खोजबीन के लिए एक विंडो, CI के लिए एक कमांड लाइन। दोनों के पीछे एक ही इंजन।

# किसी ऐप को ऐसे चलाएँ मानो 2027 का आख़िरी सेकंड हो
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# कॉफ़ी बनाते हुए 30 दिन का ट्रायल ख़त्म होते देखें: x1440 यानी हर मिनट में एक दिन
chrono run "C:\apps\test.exe" --mode x1440

# तारीख़ की जगह नामित परिदृश्य इस्तेमाल करें, और सबूत फ़ाइल में लिखें
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

कैलकुलेटर तारीख़ के परीक्षण के दूसरे आधे हिस्से का जवाब देता है - कौन-सी तारीख़ इस्तेमाल करें:

$ 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)

आप जो शायद इस्तेमाल कर रहे हैं उससे तुलना

RunAsDate जैसा, पर जो हिस्से ग़ायब थे उनके साथ

RunAsDate पाँच वॉल-क्लॉक फ़ंक्शन को रोकता है और यह काम अच्छी तरह करता है। दोनों में अंतर यहाँ हैं - और पूरा पेज यह भी बताता है कि RunAsDate कहाँ अब भी बेहतर चुनाव है।

 RunAsDateChrono Mock
एक ऐप को नक़ली तारीख़ पर चलाता हैहाँहाँ
रोके गए समय चैनल544 (30 खिसकाए गए, 14 केवल गिने गए)
घड़ी को तेज़ करनानहींहाँ
स्वतंत्र टाइम ज़ोनदस्तावेज़ में नहींहाँ
चाइल्ड प्रोसेस का अनुसरणदस्तावेज़ में नहींहाँ
बताता है कि काम किया या नहींनहींहाँ, हर चैनल के लिए
सोर्स उपलब्धफ़्रीवेयर, बंदGPL-3.0

पूरी तुलना, जिसमें यह भी है कि RunAsDate कहाँ जीतता है →

इसे पाएँ

कहीं भी अनज़िप करके चलाएँ, या इस कंप्यूटर के हर खाते के लिए हस्ताक्षरित .msi इंस्टॉल करें। चलाने के लिए एडमिनिस्ट्रेटर अधिकार नहीं चाहिए, और zip रजिस्ट्री में कुछ नहीं लिखते।