26 октября 2014 года будет исправлен мегакосяк наноповелителя времени. В 2 часа ночи стрелки часов будут переведены на час назад.
То есть, в России наконец-то установится нормальное для широт зимнее время, и это отлично.
В связи с этим для всех операционных систем рассылаются обновления справочника временных зон, чтобы часы продолжали нормально работать.
Вот только печаль-беда, пользователи Windows XP и 2003 (коих всё ещё богато) в пролёте, ведь к ним с апреля не приходят обновления.
Исправляем ситуацию
Вот неофициальное обновление для Windows XP и 2003:
Использовать на свой страх и риск: скачать, запустить и разрешить слияние с реестром.
Пока — только для зоны "Волгоград, Москва, Санкт-Петербург". Список зон может дополняться по мере необходимости, в том числе и рабочими вариантами, присланными в комментариях.
Содержимое файла
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Russian Standard Time]
"Display"="(UTC+03:00) Волгоград, Москва, Санкт-Петербург"
"Dlt"="Московское время (лето)"
"Std"="Московское время (зима)"
"TZI"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Russian Standard Time\Dynamic DST]
"2013"=hex:10,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"2014"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,01,00,03,00,01,00,00,00,00,00,00,00,00,00
"2015"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"FirstEntry"=dword:000007dd
"LastEntry"=dword:000007df
Самое главное здесь — это длинные бинарные строки. Именно они задают текущие зоны и переводы стрелок. Представляют собой вот такую структуру:
typedef struct _REG_TZI_FORMAT { LONG Bias; LONG StandardBias; LONG DaylightBias; SYSTEMTIME StandardDate; SYSTEMTIME DaylightDate; } REG_TZI_FORMAT;
Вобщем, чёрт голову сломит, без поллитра не разобраться (кому надо — ищите в МСДН-е по ключевым словам).
Поэтому нужные значения проще всего взять из обновляемого дистрибутива виндов.
Остальное просто:
TZI — это действующие значения.
Display — название временной зоны.
Std и Dlt — соответственно названия до и после перевода стрелок.
2013, ... — состояние времени для каждого года.
FirstEntry и LastEntry — первый и последний год в описаниях, которые надо принимать в расчёт; в шестнадцатиричном виде.
Комментарии
imen
#cid89842
Ответить
Уверен в размерности? Не «кило» и не «гига», а именно «мега»? ☺
В human-readable формате:
Для принципиальных критиков «этой страны» данное событие поставляет очередной повод для выражения недовольства.
Неосторожно обращаешься с квантором всеобщности. Далеко не для всех.
Но дело в том, что _нормальные_ операционные системы:
Во-первых, умеют работать с привязкой системного времени к Гринвичу. Что в ХРени ЕМНИП заявлялось, но Предание не рекомендовало использовать фичу (примерно так же, как и 64-разрядную версию, но то другая история).
Во-вторых: предоставляют пользователю возможность самостоятельного редактирования временной зоны (лично я с этим сценарием не играл).
А вот решение проблемы в стиле идейного пользователя самой распространённой ОС. Буквально сего дня прилетело в почту:
Пропущен важнейший пункт, долженствующий быть вторым: проверить манифест скачанного файла (идейные пользователи самой распространённой ОС должны в полной мере наслаждаться издержками своего выбора).
#cid89844
Ответить
#cid89842, imen
Уверен в размерности «нано»!
АХ-ХА-ХА-ХА!!!