การเปลี่ยนวันที่ของระบบเพื่อทดสอบแอป
นี่คือกลเม็ดที่เก่าแก่ที่สุด: ตั้งนาฬิกา Windows เป็นวันที่ที่คุณอยากทดสอบ รันโปรแกรม แล้วตั้งกลับ วิธีนี้ได้ผล - แต่ตราบใดที่นาฬิกาถูกเลื่อน มันก็เลื่อนทุกอย่างอื่นในเครื่องไปด้วย
สิ่งที่เคลื่อนไปกับนาฬิกาจริง ๆ
นาฬิกาของระบบไม่ได้เป็นของโปรแกรมที่คุณกำลังทดสอบเพียงตัวเดียว ทุกโพรเซส ทุกเซอร์วิส และทุกการสื่อสารผ่านเครือข่ายในเครื่องอ่านนาฬิกาเรือนเดียวกัน ดังนั้นการเปลี่ยนแปลงที่ทำเพื่อการทดสอบหนึ่งครั้งจึงเป็นการเปลี่ยนแปลงสำหรับทุกอย่าง
| สิ่งที่อ่านนาฬิกา | สิ่งที่เกิดขึ้นเมื่อคุณเลื่อนมัน |
|---|---|
| การล็อกอินโดเมนและโฟลเดอร์ที่แชร์ | Kerberos ยอมรับความต่างของนาฬิกาได้ห้านาทีโดยค่าเริ่มต้น เกินกว่านั้นตั๋วของมันจะถูกปฏิเสธ และการล็อกอินหรือการเข้าถึงโฟลเดอร์ที่แชร์จะล้มเหลว |
| ใบรับรองและ HTTPS | ใบรับรองใช้ได้หรือไม่ นาฬิกาเป็นตัวตัดสิน ตั้งนาฬิกาให้เลยวันหมดอายุของใบรับรอง ทุกการเชื่อมต่อที่อาศัยใบรับรองนั้นจะถูกปฏิเสธว่าหมดอายุ ถ้าย้อนกลับไปไกลพอ ใบรับรองก็ยังไม่มีผล |
| บริการเวลาของ Windows | เครื่องที่เข้าร่วมโดเมนรับเวลาจากตัวควบคุมโดเมน และโดยค่าเริ่มต้นบริการจะแก้นาฬิกาไม่ว่าความต่างจะมากเพียงใด วันที่ที่คุณตั้งอาจถูกยกเลิกขณะที่คุณยังทดสอบอยู่ |
| ทุกอย่างที่บันทึกเวลา | ไฟล์ บันทึก แถวในฐานข้อมูล และอีเมลที่ส่งออกขณะที่นาฬิกาถูกเลื่อน จะมีวันที่ของการทดสอบติดไปด้วย และยังคงเป็นเช่นนั้นหลังจากคุณตั้งนาฬิกากลับแล้ว |
| ซอฟต์แวร์ที่จำวันที่ล่าสุดที่เคยเห็น | โปรแกรมบางตัวอ่านนาฬิกาที่ถอยหลังว่าเป็นการแก้ไขโดยมิชอบ - และนั่นคือสิ่งที่เกิดขึ้นพอดีเมื่อคุณคืนวันที่จริง |
ยิ่งวันที่ไกล คุณก็ยิ่งเจอเรื่องพวกนี้มาก เครื่องที่ตั้งเป็นปี 2038 จะเห็นใบรับรองทุกใบที่ออกในวันนี้ว่าหมดอายุแล้ว ทดสอบปี 2038 โดยไม่ต้องเจอแบบนั้น →
นอกจากนี้ยังต้องมีสิทธิ์ที่บัญชีส่วนใหญ่ไม่มี: การเปลี่ยนเวลาของระบบเป็นสิทธิ์พิเศษของผู้ดูแลระบบ และบนเครื่องที่มีผู้ดูแล มักไม่ใช่สิทธิ์ของคุณ
เมื่อไรที่การเปลี่ยนนาฬิกาเป็นคำตอบที่ถูก
เครื่องเสมือนที่ไม่มีใครอื่นใช้ โดยปิดการซิงก์นาฬิกาของมันไว้ เป็นแท่นทดสอบที่ใช้ได้ดีทีเดียว คุณทิ้งมันทีหลัง ดังนั้นสิ่งที่มันบันทึกไว้จึงไม่สำคัญ ถ้าคุณมีอยู่แล้วและการทดสอบเป็นเรื่องของวันที่เดียว นี่คือสิ่งที่ง่ายที่สุดที่ใช้ได้
ปัญหาเริ่มเมื่อมันคือเครื่องที่คุณใช้ทำงาน เครื่องที่อยู่ในโดเมน หรือเครื่องที่ในเวลาเดียวกันรันบางอย่างที่ต้องไม่รู้สึกถึงอะไรเลย
เลื่อนนาฬิกาของโปรแกรมเดียวแทน
เวลาที่ถูกเลื่อนมองเห็นได้เฉพาะหนึ่งโพรเซสและโพรเซสลูกที่มันเริ่ม การล็อกอินโดเมน ใบรับรอง และ Windows Update ของคุณไม่เคยเห็นมัน ดังนั้นไม่มีอะไรในตารางข้างบนเคลื่อนไป - และไม่มีอะไรต้องตั้งกลับทีหลัง
# แอปเห็นวันที่ 31 ธันวาคม 2027 เวลา 23:59:50 ส่วนทุกอย่างอื่นยังเป็นวันที่จริง chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:50 # เริ่มก่อนเที่ยงคืนสิบนาทีแล้วรันเร็วขึ้น 60 เท่า - ปีเปลี่ยนภายในสิบวินาที chrono run "C:\apps\test.exe" --at 2027-12-31T23:50:00 --mode x60
วันที่ที่เลื่อนให้โปรแกรมหนึ่งไปถึงมันจริงหรือไม่ ไม่ใช่เรื่องที่ควรสันนิษฐาน ทุกเซสชันจบด้วยผลสรุปและรายการช่องทางเวลาที่โปรแกรมอ่านจริง ๆ คุณจะรู้ได้อย่างไรว่าได้ผล →
สิ่งที่วิธีนี้ไม่ได้ทดแทน
- โปรแกรมที่ถามเวลาจากเซิร์ฟเวอร์อยู่นอกเหนือสิ่งที่การแทนที่ในเครื่องเอื้อมถึง เซสชันจะบอกเมื่อเห็นโปรแกรมเปิดการเชื่อมต่อเครือข่าย แทนที่จะปล่อยให้คุณเข้าใจเอาเองว่าการทดสอบผ่าน
- การทดสอบตัวระบบเอง - บริการที่ตอบสนองต่อการเปลี่ยนของนาฬิกาจริง งานตามกำหนดเวลา พฤติกรรมของ Windows รอบการเปลี่ยนนาฬิกา - ไม่มีอะไรทดแทนการเปลี่ยนนาฬิกาได้ บนเครื่องที่คุณยอมเสียได้