Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows

แก้ไขปัญหา Time Offset ใน Windows 10 — คู่มือขั้นตอนต่อขั้นตอน

ผมสังเกตปรากฏการณ์น่าสนใจ บน Lenovo G50 ของผม ซึ่ง multi-boots Windows 10 กับหลาย Linux distributions ทุกครั้งที่ผมเปิด Microsoft operating system เวลาผิดไปหนึ่งชั่วโมง Timezone ตั้งถูกต้อง แต่ widget ดิจิทัลเล็กๆ ที่มุมขวาล่าง fake มัน 60 นาที

ผมเริ่มสำรวจ อ่าน และเช็ค และตระหนักว่าควรเขียน tutorial เล็กๆ นี้ ตอนนี้ ปัญหาอาจส่งผลต่อคนที่ใช้ Windows 10 standalone โดยไม่มี reference กับระบบปฏิบัติการอื่นๆ ทั้งสองกรณี เราจะโฟกัสที่ solution ด้าน Windows และวิธี workaround ปัญหา

สิ่งที่อาจมีส่วนทำให้เกิดปัญหา?

มีหลายเหตุผลที่ Windows 10 time อาจผิด คนบางคนสมมติว่านี่เป็น general problem และ case ของพวกเขาเป็น universal แต่ไม่ได้เป็นอย่างนั้น Firewall issues, Windows time service problems, time sync มีหลาย scenarios เราไม่รู้ทั้งหมด — แต่เราสามารถแก้ไขทั้งหมดได้

โดยเฉพาะใน dual-boot scenarios เราต้องเข้าใจหลักการบางอย่าง นี่อธิบายรายละเอียดใน Ubuntu Help section เกี่ยวกับหัวข้อนี้ โดยเฉพาะ ทุก modern computer เก็บเวลาใน so-called hardware clock ซึ่งเป็นส่วนของ chipset และได้พลังงานจากแบตเตอรี่เล็กๆ นี่ช่วยให้คอมพิวเตอร์ retain เวลาและวันที่ที่ถูกต้องเมื่อคุณเปิดเครื่อง แม้จะถูก disconnect จาก power แม้จะเป็นเวลานานค่อนข้าง relative (หลายเดือน) Operating systems อาจ update ค่านี้ ปกติเมื่อได้คำสั่ง shutdown หรืออาจใช้ hardware clock

Most Linux distributions ตั้ง hardware clock เป็น UTC Windows ปกติใช้ local time ซึ่งมักสอดคล้องกับ 'local' timezone ที่คุณเลือก หากและเมื่อ timezones เปลี่ยน (daylight saving time thingie) จะมี offset 1 ชั่วโมง (ย้อนหรือหน้า) ใน local time แต่ไม่ใช่ใน UTC ซึ่งคงที่และไม่ได้รับผลกระทบจาก DST หรือ timezone changes ดังนั้น เมื่อคุณ reboot จาก OS หนึ่งไปอีก OS หนึ่ง คือ Linux ไป Windows จนกว่า Windows จะ sync clock ของมัน เวลาอาจผิดไปหนึ่งชั่วโมง นี่คือปริศนาของปัญหาเรา

แก้ไข Windows time offset

Solution สำหรับนี้คือ: เปลี่ยน type ของ time value ที่เก็บใน hardware clock โดย Linux Most distributions ใช้ UTC และคุณสามารถเปลี่ยนได้ เราจะไม่ทำนั้น เพราะเราอยากให้ Windows behave

ดังนั้น ทางเลือกทางเลือกคือ ทำให้ Windows ไม่ใช้ local time มีสอง options เพื่อ achieve นี้: 1) เราจะต้องทำ registry change และหยุด Windows time service แต่หมายความว่า Windows จะไม่ update clock ของมัน 2) ทางเลือกอื่นคือ ทำให้ Windows sync clock บ่อยกว่า default ซึ่งเคยเป็นหนึ่งสัปดาห์ใน Windows 7/8 และลดเหลือหนึ่งวันใน Windows 10 ผมจะแสดงทั้งสอง และคุณตัดสินใจว่าชอบไหน ผมเชื่อว่าตัวเลือกที่สอง elegant กว่า

Option 1: Windows ตั้งเป็น UTC

คุณจะต้องสร้าง registry change ไปที่:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Control\TimeZoneInformation

แล้วเปลี่ยน key RealTimeIsUniversal ด้วย value 1:

Reboot ดูว่าทำงานหรือไม่ ถ้าไม่ คุณอาจต้อง disable time service:

Option 2: Time sync scheduled task

Tutorial นี้อธิบายหลาย methods ว่าทำยังไง และทำยังไงไม่ได้ — เหมือน Monty Python's sketch How Not To Be Seen จริงๆ สอดคล้องกับสิ่งที่ผมคิด สร้าง scheduled task ที่รันเมื่อ logon และ sync time ปัญหาแก้ไขแล้ว มาทำรายละเอียดกัน

เปิด Task Scheduler > Create Task คุณสามารถวาง task นี้ไว้ที่ไหนก็ได้ Setup สำหรับ scheduled task ค่อนข้าง convoluted แต่ทำได้ ที่แท็บ General ตั้งชื่อและ describe task แล้วเลือก user นี่ interesting เพราะในกรณีผม ผมรันเป็น limited account ดังนั้นผมต้องเลือก Administrator account เพื่อ achieve นี้ แต่ก็หมายถึง running regardless of whether user is logged on or not — ไม่มีการ save password ซึ่งโอเค เพราะเราต้องการแค่ access local resources

ต่อมา เราต้องการ new trigger — โดยพื้นฐานคือเมื่อไหร่ At log on

ตอนนี้เราต้อง setup สอง actions — หนึ่งคือ run Windows time service ในกรณีมันไม่ได้รันอยู่แล้ว โปรแกรมที่รันคือ %windir%\system32\sc.exe และ argument start w32time task_started แล้วเราต้องการ action ที่สอง คือ resync time โปรแกรมคือ %windir%\system32\w32tm.exe และ argument /resync

สุดท้าย condition สำหรับการรัน scheduled task นี้ คือ run whether on AC power or battery และใช้ any network connection คลิก OK และ next logon สิ่งต่างๆ ควร dandy

Manual sync (ซิงค์ด้วยตนเอง)

คุณยังสามารถ manual sync time ได้เสมอ คุณสามารถเปิด Date and Time applet ผ่าน System Settings, Control Panel หรือโดยคลิกขวาที่ clock ใน system tray > Change Time and Date เลือกแท็บ Internet Time คลิก Update now

สรุป

นี่คือสิ้นสุด ไม่ว่าการตั้งค่า operational จริงของคุณจะเป็นอย่างไร — single boot, dual-boot, multi-boot เราไม่ concerned กับระบบอื่นๆ แค่ Windows 10 เราอยากให้แน่ใจว่ามันมีเวลาที่ถูกต้อง และเรามีสอง options เพื่อ achieve นี้ บังคับระบบให้ใช้ UTC หรือทำ scheduled task ที่รันเมื่อ logon และ resync clock ทั้งสองค่อนข้าง benign แต่วิธีหลังน้อย intrusive กว่าโดยทั่วไป

หวังว่าคุณจะพบ tutorial นี้ valuable และอาจช่วยประหยัด headache ที่รบกวนกับปัญหาที่ trivial แต่ไม่ได้ยากที่จะ ignore ส่วนใหญ่คน rare เห็นปัญหานี้ แต่ถ้าเจอ solutions อยู่ทั้งหมดที่นี่ และเราเสร็จแล้ว

Cheers.