Pull to refresh

О переводе времени 2 / Не забываем пропатчить XP и 2003, иначе будет сюрприз в ночь с 6 на 7 января

Development for Windows *
Извините за подъем несколько некрофильской темы, когда все обсуждают Windows 10. Если вы по каким-то причинам ещё используете системы десятилетней давности и до сих пор не обновили Windows 2003/XP, возможно, это пост позволит вам сэкономить время и нервы в новогодние каникулы.

Итак, вышло декабрьское обновление таймзон kb3013410. Если его (или эквивалентные изменения реестра) не установить на 2003/XP с установленным kb2998527, они и дальше продолжат переводить время. Причина — неполная поддержка Dynamic DST, значения в реестре есть, но для действий по переводу времени времени они не используются. Грубо говоря, переводить стрелки в каждый год по-разному научилась только Vista и выше (ядро 6.0). Конкретно в 2015 году, если ничего не предпринимать, 2003/XP с установленным kb2998527 переведут стрелки на летнее время (+1 час) в ночь с 6 на 7 января, и на зимнее (-1 час) 25 октября.

Чтобы этого не произошло, есть простой способ — заранее снять галку перевода времени (она опять появилась после установки kb2998527), и правильный способ — установить kb3013410 (или эквивалентные ему изменения реестра). На домашнем компьютере никаких дополнительных действий не надо, сервера я бы советовал перезапустить, т.к., как выяснилось 26 октября, некоторые приложения, а так-же службы (например, IIS в Exchange) не понимают изменения таймзон до рестарта службы.

На Windows Vista/Server 2008 и выше устанавливать kb3013410 прямо сейчас или до конца года не обязательно, они и так никуда не перейдут.

Файлы реестра для XP тут, если кому надо.

Теоретическое обоснование:

Windows 2003/XP и более ранние версии операционных систем Windows не поддерживают технологию Dynamic DST для собственно процедуры смены времени, хотя соответствующие значения реестра там есть (см. msdn.microsoft.com/ru-ru/library… 85).aspx Minimum supported — Windows Vista / Windows Server 2008). Это означает, что они технически не способны переводить стрелки часов по–разному в разные года. Патчем kb2998527 для России установлены следующие времена соответственно начала и конца летнего времени:
начало — 00 часов первой среды января
конец — 02 часа последнего воскресенья октября

Именно так было сделано, поскольку имеющиеся механизмы DST не позволяют сделать однократный автоматический переход по-другому (я пробовал). Таким образом, в 2015 году и далее, если не предпринять мер, Windows 2003/XP переведет стрелки часов на час вперед в первую среду января (в 2015 это ночь с 6 на 7 января) и в последнее воскресенье октября (в 2015 это 25 октября).

Чтобы перевод стрелок в Windows 2003/XP не произошел, необходимо установить обновление kb3013410 (или эквивалентную правку реестра для XP), или, в крайнем случае, снять галку «( ) Автоматический переход на летнее время и обратно». Однако, для предотвращения проблем в случае ещё одного изменения в законодательстве, я бы не рекомендовал снимать эту галку.

Ещё раз повторюсь, ОС с ядром от 6.0, т.е. 2008/Vista, полноценно поддерживают Dynamic DST и не будут никуда переходить в 2015 и последующих годах. Однако в записи о времени перехода в старом формате, хранящиеся в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\, такие как на скриншоте ниже, будут внесены изменения. В связи с этим возможны проблемы в ПО, которое читает и использует эти значения напрямую для исчисления времени. В подразделы \Dynamic DST, определяющие перевод времени в новом формате, для России никаких изменений не вносится.

Ссылки на Майкрософт:
1) support.microsoft.com/kb/2998527/ru обновление, которое мы устанавливали в октябре 2014, секция «Список известных проблем»
(…)
Неверные параметры летнего времени для будущих лет на Windows Server 2003 и Windows XP Embedded

Если пользователи устанавливать это обновление на Windows Server 2003 или Windows XP Embedded, их системы будет продолжать использовать параметры летнего времени для 2014 даже после изменения календарного года. Это может привести к неправильному отображению времени системы.

Для решения этой проблемы пользователям следует установить накопительное Update(scheduled to be released in December, 2014) декабря до изменений календарного года. При установке обновления русский часовой пояс и декабря накопительных обновлений, их системы применить правильные параметры летнего времени и продолжает отображать правильное время в конце 2014 г.

2) support.microsoft.com/kb/3013410/ru то самое декабрьское обновление, о котором сегодня идет речь. Оно заменяет kb2981580 и все выпущенные до него, в т.ч. kb2998527. Такие обновления выходят регулярно (особенно в конце года, подготавливают систему к изменениям в законодательстве различных стран, изменяющим способ перевода стрелок в следующем году), и, как правило, являются кумулятивными, т.е. заменяют предыдущие обоновления.

Про Windows XP в MSKB ничего не сказано, т.к. она снята с поддержки с 8 апреля 2014 года.

UPD Коллеги, не забывайте, что после внесения изменений в реестр на XP для их применения надо перевыбрать таймзону руками или командой control.exe timedate.cpl,,/Z Russian Standard Time (с указанием вашего часового пояса), при этом информация о текущей таймзоне из HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones переписывается в HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation.
Tags:
Hubs:
Total votes 19: ↑19 and ↓0 +19
Views 38K
Comments Comments 27