Chrono Mock
ภาษาไทย

ทางเลือกแทน RunAsDate ที่เติมส่วนที่ขาดหายไป

RunAsDate เป็นคำตอบของ “รันโปรแกรมนี้ที่วันอื่นบน Windows” มาหลายปี และเป็นคำตอบที่ดี หน้านี้เล่าถึงจุดที่ทั้งสองต่างกัน และจุดที่ RunAsDate ยังเป็นตัวเลือกที่ดีกว่า

เทียบกันทีละข้อ

 RunAsDateChrono Mock
รันแอปหนึ่งตัวที่วันที่ปลอมใช่ใช่
ไม่แตะนาฬิกาของระบบใช่ใช่
ฟังก์ชันเวลาที่ดัก544 (เลื่อน 30 ช่อง นับอย่างเดียว 14 ช่อง)
นาฬิกาที่เร็วกว่าเวลาจริงไม่มีตัวคูณจำนวนเต็มใดก็ได้
หยุดนาฬิกาใช่ เป็นค่าเริ่มต้นใช่
กระโดดขณะแอปรันอยู่กลับสู่วันที่จริงได้อย่างเดียว หลังจากจำนวนวินาทีที่กำหนดไปข้างหน้าและย้อนกลับ ไปยังช่วงเวลาใดก็ได้
เขตเวลาเฉพาะโพรเซสนั้นไม่มีเอกสารใช่ ออฟเซ็ตคงที่
โพรเซสย่อยสืบทอดเซสชันไม่มีเอกสารใช่
เกาะเข้ากับแอปพลิเคชันที่กำลังทำงานอยู่ใช่ ตั้งแต่เวอร์ชัน 1.40ไม่ - เครื่องมือนี้เปิดแอปพลิเคชันเอง
หลายแอปพลิเคชันที่วันที่ต่างกันพร้อมกันใช่ไม่ - ครั้งละหนึ่งเซสชัน
บอกว่าได้ผลหรือไม่ไม่ผลสรุป แยกตามช่องทาง พร้อมจำนวนครั้งที่เรียก
แอป Electron และ Chromiumไม่มีเอกสารกลไกแยกต่างหาก
บรรทัดคำสั่งสำหรับ CIใช่ใช่ พร้อมรหัสออกและ JSON
ซอร์สโค้ดฟรีแวร์ ปิดซอร์สGPL-3.0
ขนาดดาวน์โหลด 47 KB และ 57 KB สำหรับ 64 บิตบรรทัดคำสั่งราว 2.4 MB พร้อมหน้าต่างราว 70 MB
Windows รุ่นเก่าย้อนไปถึง Windows 2000Windows 10 และ 11

“ไม่มีเอกสาร” หมายถึงฟีเจอร์นั้นไม่ได้ถูกกล่าวถึงในหน้าของ RunAsDate ไม่ได้อ้างว่าเครื่องมือนั้นไม่มีฟีเจอร์ดังกล่าว นาฬิกาของ RunAsDate จะหยุดนิ่งจนกว่าจะเปิดตัวเลือก Move the time forward according to the real time

ความต่างที่สำคัญที่สุด

ไม่ใช่จำนวนช่องทาง แต่คือที่ RunAsDate บอกอย่างซื่อสัตย์ในเอกสารของตัวเองว่ามัน“จะไม่มีผลกับแอปที่ดึงวันที่/เวลาปัจจุบันจากแหล่งอื่น” - แล้วปล่อยให้คุณหาเองว่าแอปของคุณเป็นหนึ่งในนั้นหรือไม่

Chrono Mock ถือประโยคเดียวกันนั้นเป็นสิ่งที่ต้องวัด ทุกเซสชันจบด้วยผลสรุป ช่องทางที่แอปอ่านจริงพร้อมจำนวนของแต่ละช่อง ช่องทางที่ตกหล่น และคำเตือนเมื่อเห็นแอปเปิดการเชื่อมต่อเครือข่ายก่อนที่มันจะถามนาฬิกาเสียอีก

แอปที่ดูเหมือนเวลาถูกเลื่อนแต่ไม่ได้ถูกเลื่อนแย่กว่าแอปที่ไม่เคยเปิดเลย - มันให้ผลการทดสอบที่ผ่านซึ่งไม่มีความหมาย การตรวจสอบทำงานอย่างไร →

ห้าฟังก์ชัน หรือ 44 ช่องทาง

RunAsDate ดักฟังก์ชัน GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime, NtQuerySystemTime และ GetSystemTimePreciseAsFileTime สำหรับแอปจำนวนมากนั่นเพียงพอจริง ๆ เพราะนาฬิกาติดผนังถูกอ่านที่นั่น

พื้นผิวส่วนที่เหลือคือที่ที่โค้ดซึ่งขึ้นกับวันที่มักซ่อนอยู่:

  • เขตเวลา - ฟังก์ชันสองตัวที่บอกเขตเวลา บวกอีกหกตัวที่แปลงระหว่างเขต ซึ่งทำให้รายงานไปตกผิดวัน
  • แกนเวลาที่ผ่านไป - จำนวนติ๊กและเวลาขัดจังหวะแบบไม่เอนเอียง ซึ่งเป็นสิ่งที่การนับถอยหลังช่วงทดลองใช้มักวัด
  • การหลับ (sleep) เพื่อให้การหน่วงเป็นการหน่วงตามนาฬิกาของเซสชัน ไม่ใช่นาฬิกาจริง และการรอออบเจกต์ ซึ่งถูกนับและคงความยาวจริงไว้
  • ตัวจับเวลา - แบบรอได้ แบบหน้าต่าง แบบเธรดพูล และแบบมัลติมีเดีย
  • การสร้างโพรเซส เพื่อให้โพรเซสย่อยของตัวติดตั้งรันในเซสชันเดียวกัน ไม่ใช่ในวันปัจจุบัน
  • การเชื่อมต่อเครือข่าย ถูกนับเป็นสัญญาณว่าเวลาอาจมาจากเซิร์ฟเวอร์

จาก 44 ช่อง มี 30 ช่องที่ถูกย้ายไปใช้นาฬิกาของเซสชัน อีก 14 ช่องถูกนับอย่างเดียวและยังเป็นค่าจริง รายงานจึงแสดงรายการเหล่านี้โดยไม่อ้างว่าถูกเลื่อน นาฬิกาแขวนผนังและเขตเวลาถูกเลื่อนในทุกเซสชัน แกนเวลาที่ผ่านไปและการรอจะถูกเฝ้าดูเมื่อคุณขอด้วย --scale-duration และตัวนับความละเอียดสูงด้วย --scale-qpc

เมื่อ RunAsDate เป็นตัวเลือกที่ดีกว่า

จริง ๆ และไม่ใช่เรื่องหายาก:

  • คุณต้องการวันที่เดียว ที่ความเร็วปกติ ตอนนี้เลย RunAsDate เป็นไฟล์ดาวน์โหลดเล็กกว่า 60 KB ไม่มีหน้าต่างให้ต้องเรียนรู้ และทำสิ่งนี้มาหลายปีแล้ว
  • คุณใช้ Windows รุ่นเก่า RunAsDate ย้อนไปถึง Windows 2000 เครื่องมือนี้มุ่งที่ Windows 10 และ 11 และไม่ได้ทดสอบบนรุ่นที่เก่ากว่า
  • ขนาดสำคัญ ไฟล์ดาวน์โหลด 47 KB เทียบกับราว 2.4 MB สำหรับบรรทัดคำสั่ง หรือราว 70 MB พร้อมหน้าต่าง ไม่ใช่การเปรียบเทียบที่สูสี
  • คุณไม่ต้องการผลสรุป การวัดความครอบคลุมหมายถึงต้องอ่านผลลัพธ์ ถ้าการทดสอบเป็นแบบใช้แล้วทิ้ง นั่นคือภาระที่คุณไม่ได้ขอ
  • แอปพลิเคชันกำลังทำงานอยู่แล้ว RunAsDate เกาะเข้ากับโพรเซสที่กำลังทำงานได้ตั้งแต่เวอร์ชัน 1.40 ส่วน Chrono Mock เปิดแอปพลิเคชันเอง แอปที่เปิดใหม่ไม่ได้จึงอยู่นอกขอบเขตของมัน
  • คุณต้องการหลายแอปพลิเคชันที่วันที่ต่างกันพร้อมกัน RunAsDate ให้วันที่ของตัวเองแก่แต่ละแอป ส่วน Chrono Mock ทำงานครั้งละหนึ่งเซสชัน

ทั้งสองอยู่ร่วมกันได้ด้วย ไม่มีอะไรที่นี่ห้ามคุณเก็บ RunAsDate ไว้สำหรับกรณีเร่งด่วน

สิ่งที่ทั้งสองไม่ได้มีไว้เพื่อ

เครื่องมือทั้งสองโผล่ในการค้นหาเรื่องการต่ออายุช่วงทดลองใช้ เครื่องมือนี้ไม่ได้ถูกสร้างมาเพื่อสิ่งนั้น และไม่มีตัวอย่าง พรีเซ็ต หรือหน้าใดที่นี่จะสาธิตมันเลย Chrono Mock มีไว้ทดสอบซอฟต์แวร์ที่คุณรับผิดชอบ - ไลเซนส์หมดอายุของคุณเอง ตรรกะการต่ออายุของคุณเอง รายงานสิ้นเดือนของคุณเอง

นั่นยังเป็นกรณีที่มีโอกาสทำงานน้อยที่สุดด้วย การป้องกันไลเซนส์อ่านเวลาเป็นประจำผ่านเส้นทางที่ถูกเลือกมาให้ดักยาก - หน้าข้อมูลโหมดผู้ใช้ที่ใช้ร่วมกัน การเรียกระบบโดยตรง เซิร์ฟเวอร์ - และนาฬิกาที่เดินถอยหลังเป็นเงื่อนไขที่โค้ดแบบนั้นถูกเขียนมาเพื่อตรวจจับ การตรวจสอบจะบอกคุณว่ามันไม่ได้ผล ซึ่งเป็นคำตอบที่ซื่อสัตย์ ไม่ใช่คำตอบที่เป็นประโยชน์

ลองใช้