सिस्टम घड़ी को छुए बिना, Windows ऐप को किसी भी तारीख़ पर चलाएँ
किसी एक ऐप्लिकेशन की घड़ी को अगले साल पर सेट करें, उसे रोक दें, या उसे इतना तेज़ कर दें कि आप कॉफ़ी बनाएँ और 30 दिन का ट्रायल ख़त्म हो जाए। बाकी मशीन असली समय पर ही रहती है - आपका डोमेन लॉगऑन, आपके सर्टिफ़िकेट और बाकी हर प्रोग्राम सामान्य रूप से चलते रहते हैं।
फिर यह आपको बताता है कि बदलाव सचमुच काम किया या नहीं।
मुफ़्त और ओपन सोर्स, GPL-3.0 पोर्टेबल या इंस्टॉल किया हुआ चलाने के लिए एडमिनिस्ट्रेटर अधिकार नहीं चाहिए कभी इंटरनेट से संपर्क नहीं करता
सत्र कैसा दिखता है
23:59:50
18:12:33
यह क्यों है
तारीख़ पर निर्भर किसी भी चीज़ को परखने के लिए समय को आगे-पीछे करना पड़ता है। दोनों आम तरीके ख़राब हैं।
लाइसेंस की समाप्ति, ट्रायल अवधि, सब्सक्रिप्शन का नवीनीकरण, सर्टिफ़िकेट की वैधता, टोकन की आयु, माह-अंत और वर्ष-अंत की रिपोर्टें, ब्याज की गणना, रिमाइंडर।
विकल्प 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 कहाँ अब भी बेहतर चुनाव है।
| RunAsDate | Chrono Mock | |
|---|---|---|
| एक ऐप को नक़ली तारीख़ पर चलाता है | हाँ | हाँ |
| रोके गए समय चैनल | 5 | 44 (30 खिसकाए गए, 14 केवल गिने गए) |
| घड़ी को तेज़ करना | नहीं | हाँ |
| स्वतंत्र टाइम ज़ोन | दस्तावेज़ में नहीं | हाँ |
| चाइल्ड प्रोसेस का अनुसरण | दस्तावेज़ में नहीं | हाँ |
| बताता है कि काम किया या नहीं | नहीं | हाँ, हर चैनल के लिए |
| सोर्स उपलब्ध | फ़्रीवेयर, बंद | GPL-3.0 |
इसे पाएँ
कहीं भी अनज़िप करके चलाएँ, या इस कंप्यूटर के हर खाते के लिए हस्ताक्षरित .msi इंस्टॉल करें। चलाने के लिए एडमिनिस्ट्रेटर अधिकार नहीं चाहिए, और zip रजिस्ट्री में कुछ नहीं लिखते।