Госдума России приняла в июле законопроект о возврате к зимнему времени, а также об установлении новой системы часовых зон. В результате 26 октября 2014 года в большинстве регионов России время будет снова переведено на час назад, и в стране появятся 11 часовых зон вместо 9 существующих сейчас, причем их границы изменятся.
Если для обычных граждан это лишь лишний час поспать, то для системного администратора этот момент есть жуть жуткая. В данной статье я рассмотрю проблему обновления часовых поясов для Windows XP, Windows Server 2003 и системы электронной почты на базе MS Exchange 2003 с нативным клиентом Outlook. Не секрет, что эти системы никуда не делись и хотя и ХР и Exchange 2003 сняты со всех видов поддержки, включая даже премьер поддержку, они успешно используются как в малых так и больших организациях и событие, связанное с переводом стрелок на час назад актуально для них как никогда. Актуально еще и по той причине, что официальных обновлений для снятых с поддержки систем от компании Microsoft нет и не будет. Т.к. по роду деятельности мне пришлось готовить решение для этих систем, проводить некоторые тесты и т.п., то я решил поделиться с коллегами результатами своих трудов. Итак, кому актуально, добро пожаловать под кат. Будет интересно.
Немного общей информации
С принятием Федерального закона Российской Федерации от 21.07.2014г. № 248-ФЗ «О внесении изменений в Федеральный закон „Об исчислении времени“ на территории Российской Федерации 26 октября 2014 года осуществляется перевод часов и устанавливаются соответствующие часовые зоны и значения времени. В результате большинство регионов России перейдет на 1 час назад, при этом будут созданы 3 новые часовые зоны и объединены 2 текущие часовые зоны в одну новую. Изменится конфигурация часовых зон – ряд регионов переместится в соседние или новые зоны. Переход на летнее и зимнее время в течении года по-прежнему осуществляться не будет.
23-го сентября 2014 г. корпорация Microsoft выпустила накопительное обновление (kb2998527) для операционных систем Windows для учета текущих изменений в порядке исчисления времени и разместила его для скачивания в Центре загрузки Microsoft (https://support2.microsoft.com/kb/2998527/ ) и системе автоматического обновления Windows Update (https://catalog.update.microsoft.com ). Это обновление содержит последние изменения, принятые в России. В дополнение, в операционных системах Windows будет создана новая часовая зона для Республики Беларусь.
Изменение исчисления времени произойдет 26 октября 2014 года в 2:00 местного времени. В связи с этим в операционных системах Windows данные изменения отобразятся в момент изменения отсчета часов, следующего после 1ч:59м:59с.
что произойдет 26 октября 2014 года в 2:00 по местному времени
Часовые пояса в России изменятся и довольно существенно. Картина с сайта Лента.ру
В итоге нас ожидает следующая веселая жизнь, а именно.
Изменения в существующих часовых поясах
после того, как вы установите обновление KB29985527 на ваши операционные системы, в существующих часовых поясах, прописанных в системах изменится следующие
Новое название часового пояса | Новое отображаемое имя | Текущее название часового пояса | Текущее отображаемое имя | |
1 | Russia Time Zone 1 | (UTC+02:00) Kaliningrad (RTZ 1) | Kaliningrad Standard Time | (UTC+03:00) Kaliningrad, Minsk |
2 | Russia Time Zone 2 | (UTC+03:00) Moscow, St. Petersburg, Volgograd (RTZ 2) | Russian Standard Time | (UTC+04:00) Moscow, St. Petersburg, Volgograd |
3 | Russia Time Zone 4 | (UTC+05:00) Ekaterinburg (RTZ 4) | Ekaterinburg Standard Time | (UTC+06:00) Ekaterinburg |
4 | Russia Time Zone 5 | (UTC+06:00) Novosibirsk (RTZ 5) | North Central Asia Standard Time | (UTC+07:00) Novosibirsk |
5 | Russia Time Zone 6 | (UTC+07:00) Krasnoyarsk (RTZ 6) | North Asia Standard Time | (UTC+08:00) Krasnoyarsk |
6 | Russia Time Zone 7 | (UTC+08:00) Irkutsk (RTZ 7) | North Asia East Standard Time | (UTC+09:00) Irkutsk |
7 | Russia Time Zone 8 | (UTC+09:00) Yakutsk (RTZ 8) | Yakutsk Standard Time | (UTC+10:00) Yakutsk |
26 октября 2014 года в 2 часа ночи по местному времени часы пользовательских ПК, расположенные в данных часовых поясах будут автоматически переведены на зимнее время. Но не обошлось без исключений. Исключения составляют:
- в Республике Удмуртия и Самарской области следует выполнить ручное переключение на часовой пояс “Russian Time Zone 3” вместо автоматически установленного часового пояса RTZ 2 (Russian Time Zone 2);
- в Кемеровской области следует выполнить ручное переключение на часовой пояс “Russian Time Zone 6” вместо автоматически установленного часового пояса RTZ 5 (Russian Time Zone 5);
- в Забайкальском крае следует выполнить ручное переключение на часовой пояс “Russian Time Zone 7” вместо автоматически установленного часового пояса RTZ 8 (Russian Time Zone 8).
Новые часовые пояса
Новое название часового пояса | Новое отображаемое имя | Текущее название часового пояса | Текущее отображаемое имя | |
1 | Russia Time Zone 3 | (UTC+04:00) Izhevsk, Samara (RTZ 3) | Отсутствует | Отсутствует |
2 | Russia Time Zone 10 | (UTC+11:00) Chokurdakh (RTZ 10) | Отсутствует | Отсутствует |
3 | Russia Time Zone 11 | (UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky (RTZ 11) | Отсутствует | Отсутствует |
Компьютеры пользователей, расположенные в данных часовых поясах должны быть вручную настроены на соответствующий часовой пояс. В ином случае c 26 октября 2014 года c 2 часов ночи по местному времени отображение времени на этих компьютерах будет некорректное.
Объединение часовых поясов
Новое название часового пояса | Новое отображаемое имя | Текущее название часового пояса | Текущее отображаемое имя | |
1 | Russia Time Zone 9 | (UTC+10:00) Vladivostok, Magadan (RTZ 9) | Vladivostok Standard Time | (UTC+11:00) Vladivostok |
Magadan Standard Time | (UTC+12:00) Magadan |
Для компьютеров, настроенных на часовой пояс “Vladivostok Standard Time” изменение часового пояса произойдет автоматически. Для компьютеров, настроенных на часовой пояс “Magadan Standard Time” произойдет только корректировка времени. Компьютеры в этом часовом поясе должны быть вручную переключены на новый часовой пояс “Russia Time Zone 9”, как основной часовой пояс после 26 октября 2014 года.
Исключения для компьютеров, настроенных на “Magadan Standard Time”, составляют:
- в Магаданской области следует вручную переключиться на часовой пояс “Russian Time Zone 8”;
- в Чукотском Автономном округе (Чукотка) и Камчатский Край (Камчатка) следует вручную переключиться на часовой пояс “Russia Time Zone 11”.
Ожидаемые проблемы
Ну как без этого:
- для Windows XP не будет выпущено официальных обновлений для корректировки отображения времени (за исключением редакции Embedded);
- операционные системы Windows Server 2003 и Windows XP Embedded не будут после установки обновления KB2998527 автоматически перенастроены на новые часовые пояса (даже в случае их автоматической настройки для других ОС);
- почтовые клиенты Microsoft Outlook до версии 2007 включительно (версии Microsoft Outlook 2010 и более поздние не испытывают подобной проблемы) после перевода времени в два часа ночи 26 октября 2014 года будут некорректно отображать созданные ранее этой даты задания из календаря (время в них сдвинется на час назад), запланированные на дату позже 2х часов ночи 26 октября 2014 года.
Начинаем обновляться
Обновление Microsoft Windows XP Professional
Для ХР у нас есть два варианта обновления:
- превращаем ХР в Embedded;
- вносим изменения в реестр напрямую.
Превращаем ХР в Embedded
Превращение начинается:
- запустить редактор реестра на целевой машине и перейти по пути HKEY_LOCAL_MACHINESYSTEMWPA;
- выделить раздел WPA правым кликом мышки и выбрать пункт контекстного меню Создать – Раздел;
- создать раздел с именем PosReady;
- внутри раздела PosReady создать параметр DWORD с именем Installed и присвоить ему значение 1.
После проведенной модификации на XP можно будет установить исправление kb2998527 от версии Embedded. Взять его можно из, например, каталога Windows Update по ссылке в самом начале.
По окончании установки необходимо вручную изменить часовой пояс. Для Московского времени придется +04:00 Абудаби изменить на +03:00 RTZ 2. Не забудьте проверить, что установлен флажок на „Автоматически переходить на летнее время и обратно“. В ином случае перевод времени будет некорректный. Поэтому если ваша ОС старше 2011 года и на ней сняли этот флажок, обратно он после установки исправления не вернется. Почему так сделала МС — я не понимаю.
После установки исправления от Embedded новые значения в разделе реестра WPA можно удалить. Удалить их можно до ребута. После ребута ОС удалить их не даст. К сожалению, я не могу сказать, на что может повлиять эта ветка реестра еще и/или установка исправления для Embedded.
Вносим изменения в реестр напрямую
Вторым вариантом изменения часовых поясов на Windows XP может быть прямое редактирование реестра. Удобно тогда, когда у вас куча ХР в, например, домене, требующих обновления. Тогда создаете файлы .reg и распространяете их через групповую политику. Для этого необходимо собрать эталонную ХР (например, на виртуалке), превратить ее в Embedded вышеуказанным способом, установить исправление kb2998527, установить корректный текущий часовой пояс и выгрузить две ветки реестра:
- HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionTime Zones — база данных часовых поясов
- HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation — текущий часовой пояс
Сохраните их под названиями (для удобства дальнейшего понимания) 3.reg и 4.reg. Создайте также два файла 1.reg и 2.reg со следующим содержимым соответственно:
[-HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionTime Zones] — удаляет базу часовых поясов
[-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation] — удаляет значение текущего часового пояса
В итоге у нас будет четыре файла для распространения: 1.reg, 2.reg, 3.reg и 4.reg. В такой последовательности их и надо будет применить. Кстати, таким способом мы получаем два бонуса:
- не надо забивать голову флажком „автоматический переход на летнее время“ — он будет установлен автоматом
- не „поедут“ календари в Outlook (об этом ниже)
Распространение через GPO
Т.к. в среде 2003-ХР установленные предпочтения групповых политик достаточно редки, исправления в реестре будем делать простым скриптом. Для этого создадим файл с расширением .cmd следующего содержания:
@echo off
IF EXIST c:windowsok.file (exit) ELSE (regedit /s \contoso.internalSYSVOLcontoso.internalscripts1.reg & regedit /s \contoso.internalSYSVOLcontoso.internalscripts2.reg & regedit /s \contoso.internalSYSVOLcontoso.internalscripts3.reg & regedit /s \contoso.internalSYSVOLcontoso.internalscripts4.reg & echo. 2>c:windowsok.file & tzchange.exe /c “Russian Standard Time”)
Скрипт делает следующее: проверять, есть ли в папке Windows файл ok.file и если он есть, то завершает работу. Скрипт уже выполнялся. Если файла нет, то применяются значения из файлов .reg в указанной последовательности. Не забудьте, что файлы .reg должны быть доступны по сетевому пути. После применения в каталоге Windows создается файл ok.file и выполняется назначение текущего часового пояса, т.к. после изменения в реестре это не произойдет автоматом. Также можно вместо команды tzchange просто ребутнуть ПК (или дать команду shutdown -r). Как кому нравится.
Осталось сделать групповую политику. Идем в редактор групповых политик. Развернуть Computer Configuration – Windows Settings – Scripts. В левой части окна редактирования политики дважды кликнуть по пункту Startup. В окне редактирования свойств пункта Startup нажать кнопку Add и добавить созданный ранее файл .cmd по сетевому пути. Нажать ОК два раза и закрыть окно редактора групповой политики. Применить созданную политику к организационному подразделению, содержащему учетные записи целевых ПК. После перезагрузки целевых ПК политика применится.
Обновление Microsoft Windows 2003 Server
Для Microsoft Windows 2003 выпущено обновление kb2998527. Поэтому основная проблема заключается в том, чтобы перевести часовой пояс куда надо. Понятно, что это можно сделать вручную. А так же удалением значений реестра и добавлением необходимых (например, тем же способом что и для ХР). Для этого на эталонной машине с установленным обновлением и корректным часовым поясом необходимо выгрузить ветку реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation и сохранить ее под именем 2.reg. После чего создать файл 1.reg со следующим содержимым
[-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation].
Применить вышеуказанным способом через групповую политику к серверам Windows 2003 в указанной последовательности. Сначала файл 1, потом 2. И дальше на выбор или команда смены текущего часового пояса или просто ребут.
Обновление заданий в календаре Outlook 2000-2007
И последняя проблема в разрезе устаревших систем Microsoft, с которой пришлось столкнуться при тестировании переключения на зимнее время, это то, что в заданиях, которые были созданы до перехода на зимнее время на даты позже 26 октября „поехало“ время на час назад. Другими словами то, что было запланировано на 9 утра, стало после установки исправления kb2998527 на даты позже 26 октября запланировано на 8 утра. Что плохо. Кстати, при тестировании на ХР там, где применялись изменения для реестра напрямую (без „превращения“ ОС в Embedded) календари не „поехали“. Там, где ставилось обновление, все как надо — уехали.
Для этого у Microsoft есть утилита. На самом деле их две, одна выполняется на клиенте, другая напрямую на сервере Exchange. Но т.к. то, что выполняется на сервере Exchange может его поломать (и МС на это намекает) безопаснее побегать по машинам, если что, чем колдовать над восстановлением базы. Поэтому я рассмотрю только утилиту, которая выполняется на стороне клиента. Также я не буду рассматривать обновление календарей в служебных почтовых ящиках и общих папках. Все это рассмотрено в статье MS (она будет ниже) и к сути данного поста отношение имеет несколько косвенное.
Календари „едут“ практически на всех ОС после изменения часового пояса с версией Outlook от 2000 до 2007. Почему практически, потому как это стоит проверить. Может быть вам повезет и задачи останутся на месте. Например, в моих экспериментах календари в Outlook 2007 остались корректными в Windows 7. Но официальная позиция МС такая, что указанные версии Outlook „поедут“. Не требуют действий версии Outlook 2010 и 2013. Там все нормально всегда.
Итак, чтобы поправить работу „поехавших“ заданий в календарях, нам необходимо зайти на сайт http://support2.microsoft.com/kb/930879/ru и загрузить или 32-разрядную или 64-разрядную версию пакета средства обновления данных о часовых поясах.С этим никаких проблем нет. Проблема есть в массовом развертывании и в массовом же выполнении. Официально МС говорит буквально следующее „ставьте и запустите“. Что не всегда удобно. Поэтому перед мной появилась задача это все перевести на групповые политики.
В итоге выяснилось, что средство по исправлению календарей — OutlookTimeZoneMove.exe — не более чем архив, который можно расковырять тем же WinRAR. Что и было сделано. Из файла OutlookTimeZoneMove.exe был извлечен файл TZMove.msi. К сожалению, версии для х64 и х86 называются одинаково, поэтому не забудьте переименовать TZMove.msi в TZMove_32.msi и TZMove_64.msi, соответственно.
После этого данные файлы необходимо поместить на сетевую шару, доступную для пользователей домена для чтения и создать групповую политику для распространения. Придется создать две групповых политики и настроить из выполнение на ОС со своей разрядностью (например, через фильтры WMI), но эти настройки выходят за рамки данной статьи.
После создания групповой политики открыть ее на редактирование. Развернуть User Configuration – Software Settings. Кликнуть на пункт Software installation, выбрать пункт контекстного меню New – Package и добавить файл TZMove.msi по сетевому пути. Нажать ОК. В правой части окна редактирования политик выбрать двойным кликом созданный пакет и войти в его свойства. Перейти на закладку Deployment и установить переключатель тип распространения в Assignrd и в переключатель на пункте Install this application at logon.
Нажать ОК закрыть окно редактора групповой политики. Применить созданную политику к организационному подразделению, содержащему учетные записи целевых пользователей. После перезагрузки ПК и входа целевого пользователя средство управления корректировкой заданий в календаре Outlook будет развернуто на целевом ПК для целевого пользователя.
И нам остается это средство только запустить, ибо заставить пользователя сделать это самому достаточно тяжко. Сложность, на первый взгляд, заключается в том, что средство исправление ставится в трех вариантах пути к исполняемому файлу:
- Для 32x OS — “%PROGRAMFILES%Microsoft OfficeOffice12Office Outlook Time Zone Data Update Tooltzmove.exe”
- Для 64х OS — “%PROGRAMFILES(x86)%Microsoft OfficeOffice12Office Outlook Time Zone Data Update Tooltzmove.exe”
- Для Outlook 2010 64x — “%PROGRAMFILES%Microsoft OfficeOffice14Time Zone Data Update Tool for Microsoft Outlooktzmove.exe”
Казалось бы, это проблема. Но на самом деле все оказалось просто. Создаем файл с расширением .cmd и добавляем туда следующее содержимое:
@echo off
IF EXIST "%userprofile%ok1.file" (exit) ELSE ("%PROGRAMFILES%Microsoft OfficeOffice12Office Outlook Time Zone Data Update Tooltzmove.exe" /quiet & “%PROGRAMFILES(x86)%Microsoft OfficeOffice12Office Outlook Time Zone Data Update Tooltzmove.exe” /quiet & “%PROGRAMFILES%Microsoft OfficeOffice14Time Zone Data Update Tool for Microsoft Outlooktzmove.exe” /quiet echo. 2>"%userprofile%ok1.file")
Скрипт проверят, есть ли в папке профиля пользователя файл ok1.file и если он есть, скрипт завершает работу (он уже выполнялся). Если же файла нет, то скрипт пытается выполнить в „тихом“ режиме средство по корректировке заданий в календаре пользователя по все трем возможным путям. Один да и сработает. Не путь джедая, но зато быстро реализуется.Потом создает файл ok1.file и завершает работу.
После создания групповой политики открыть ее на редактирование. Развернуть User Configuration – Windows Settings – Scripts. В левой части окна редактирования политики дважды кликнуть по пункту Logon. В окне редактирования свойств пункта Logon нажать кнопку Add и добавить созданный ранее файл .cmd по сетевому пути.
Нажать ОК два раза и закрыть окно редактора групповой политики. Применить созданную политику к организационному подразделению, содержащему учетные записи целевых пользователей.
После перезагрузки целевого ПК входа целевого пользователя будет произведена «тихая» (не требующая взаимодействия с пользователем) корректировка заданий в календаре Outlook.
Вот и все, что я хотел рассказать. Надеюсь, это поможет тем, кто столкнулся с подобной проблемой. Буду рад ответить на вопросы и замечания.
Бонус для тех, кто дочитал до конца:
если вы не знаете, был ли установлен или сброшен флажок на ОС 2003 и ХР, где будут установлено исправление, просто удалите одно значение реестра, распространив файл .reg со следующим содержимым:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation]
“DisableAutoDaylightTimeSet”=-
Автор: Just_Wah