Часы Windows XP установлены неправильно после выхода из спящего режима

7803
lajos

У меня двойная загрузка Linux и Windows XP на моем ноутбуке. Я добавил следующий ключ реестра в XP для поддержки Universal Time из BIOS:

HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal 

Когда я запускаю XP, часы установлены правильно, но если машина выходит из спящего режима, часы выключаются на пару часов.

Есть ли способ, чтобы XP правильно использовал настройку универсального времени во время пробуждения? Если нет, могу ли я помешать XP установить часы на возобновление?

2

3 ответа на вопрос

5
Joey

Я предполагаю, что Windows как-то плохо себя ведет после пробуждения из-за системного времени. Согласно статье в Википедии, раздел реестра, на который вы ссылаетесь, не работает полностью, даже в последних версиях Windows:

Windows ожидает, что часы реального времени компьютера будут работать по местному времени. Поскольку в Windows NT была запись реестра RealTimeIsUniversal = 1, но эта функция еще не поддерживается или не полностью реализована (включая Vista), поэтому невозможно запускать часы реального времени в формате универсального координированного времени.

Я думаю, что вам лучше всего сказать в Linux, что системные часы работают по местному времени и кусать пулю два раза в год с помощью летнего времени.

ETA: в этой статье немного подробнее описывается проблема, а также намеки на тот факт, что проблемы с этим разделом реестра устранены в Vista SP2 и Windows 7:

2001-07-09:Я получил ответ от кого-то из Microsoft Base Kernel Team, который заинтересовался RealTimeIsUniversal, и они взглянули на соответствующие части исходного кода ядра NT. Флаг RealTimeIsUniversal присутствует (остаток со времен, когда NT все еще работал на RISC-машинах с UTC RTC), но его реализация сейчас кажется неполной, и в настоящее время он не охватывается документацией Microsoft и набором регрессионных тестов, поэтому его использование не рекомендуется в этот раз. За последние несколько дней было выявлено несколько потенциальных ошибок RealTimeIsUniversal, возможно, их будет больше. Например, отладчик ядра предполагает, что время CMOS является местным, и ошибочно получит время, когда RealTimeIsUniversal = 1.

2008-10-31: Ура! Кто-то из Отдела основных операционных систем Microsoft намекнул мне по электронной почте, что как Vista SP2, так и Windows 7 исправят проблемы с поддержкой RealTimeIsUniversal = 1, из-за которой запуск часов CMOS в UTC пока не практичен для Windows (т. Е. Время был не прав после возобновления приостановки / гибернации Windows). Тем не менее, он предупреждает, что эта улучшенная поддержка UTC в часах CMOS может быть не сразу широко задокументирована, и детали могут измениться в будущем.

Итак, в заключение я думаю, что у вас есть два варианта:

  1. Обновите операционную систему до последней версии.
  2. Переключите Linux на местное время.

PS: В отличие от других постеров, это не может быть батарея CMOS. Часы реального времени не питаются от батареи, пока система работает. Это включает в себя режим сна (очевидно). Если батарея CMOS разрядилась, часы реального времени вернутся к своим заводским настройкам, которые обычно 1 января несколько лет назад. Смещение пары часов просто не происходит, поскольку нет никакого «состояния» часов, которое переживало бы полную потерю мощности. Это не родственные настенные часы с отслаивающейся батареей, которые сохраняют свое время, даже когда батарея разряжена.

2
harrymc

Если при загрузке установлено правильное время (потому что оно синхронизируется), и оно корректно, пока Windows его поддерживает, но не работает, когда Windows спит, то, скорее всего, вам следует проверить батарею CMOS.

Если батарея CMOS разряжена, то часы возвращаются в исходное состояние. Однако это произойдет только в том случае, если вы физически отключите питание компьютера. Joey 15 лет назад 0
ИМХО Windows не забывает текущее время, когда спит. Аппаратные часы просто не идут вперед. Ты путаешь сон с перезагрузкой. harrymc 15 лет назад 0
Аппаратные часы улучшаются сами по себе, если они имеют питание. Это не то, что делает операционная система. Windows, однако, полагается на RTC только при запуске и сохраняет время в любом случае. Поэтому, когда RTC и собственное хронометраж Windows не синхронизированы (запуск, выход из спящего режима / гибернации), он должен обновлять свои собственные часы. И вот где лежат ошибки; см. статью, которую я связал в своем ответе. Joey 15 лет назад 0
2
ChrisF

Он не похож на батарею CMOS, поскольку обычно сбрасывает время на фиксированную дату, а не «выключается на пару часов».

Другое временное решение - установить что-то вроде Atomic Clock Sync и установить для него «Auto Synchronize Daily». Это вернет часы в соответствие.

Похожие вопросы