Comp.Soft
Главная | Регистрация | Вход
Вторник, 23-Апреля-2024, 18:27
АСТРАХАНЬ
Меню
Поиск
Категории
FAQ по ноутбукам
Сборник советов
Железо
FAQ - Разное
Сделаем это быстро
Файлообменники
Мышка
DVD-привод
Автоматическая установка
Сервер 2003/2008
Дешёвый СОФТ
Чат
Это нужно
Главная » Статьи » Советы пользователю » Сборник советов

Скрипт для изменения часовых поясов Украины, Беларуси и Армении

Теория

За назначение и корректное отображение часового пояса в реестре Windows отвечает раздел

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\*Имя часового пояса*

В зависимости от версии операционной системы в нем хранятся параметры, определяющие конкретный часовой пояс.

Для Windows XP/2003 это параметры:

  • Display
  • Dlt
  • Std
  • Index
  • MapID
  • TZI

Для Windows Vista и выше добавились еще несколько параметров:

  • MUI_Display
  • MUI_Std
  • MUI_Dlt

Нас интересуют параметры, которые критичны для смены часового пояса:

Display – отвечает за отображение часового пояса в списке выбора часовых поясов.

Dlt –  задает название летнего времени.

Std – "Стандартное" зимнее время.

TZI – Самый важный параметр. Это база данных о временном смещении, времени перехода на летнее время и т.д. Из этого параметра каждый раз при смене часового пояса создаются параметры в разделе реестра

HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

Вот как описывается структура ключа TZI на MSDN:

typedef struct _REG_TZI_FORMAT
{
    LONG Bias;
    LONG StandardBias;
    LONG DaylightBias;
    SYSTEMTIME StandardDate;
    SYSTEMTIME DaylightDate;
} REG_TZI_FORMAT;

Таким образом, в одном бинарном ключе перечисляются следующие параметры: Bias, StandardBias, DaylightBias, StandardDate, DaylightDate. О значении этих параметров также можно прочесть на MSDN.

В зависимости от языка и версии Windows, в раздел TimeZoneInformation копируются параметры отображения часовой зоны в графическом интерфейсе. В Windows XP эти значения берутся из ключей реестра Display, Dlt, Std, а начиная с Vista из соответствующей библиотеки локализации(MUI). Однако для совместимости остаются и старые параметры Display, DaylightName и т.д.

Сопоставление параметров в разделах TimeZone и TimeZoneInformation видно на картинке, взятой из интересной статьи в блоге BCL Team:

*

Что интересно, начиная с Windows Vista, Майкрософт отказалась от карты в окне смене часового пояса, а ведь эта карта была там, начиная с Windows 95, и для каждого часового пояса в реестре хранились координаты.

В реестре есть также раздел:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\*Имя часового пояса*\
DYNAMIC DST (DYNAMIC DAYLIGHT SAVING TIME)

Этот раздел хранит историю  изменений часовых поясов по годам.  Windows XP и Windows Server 2003 обновляют этот ключ посредством накопительных обновлений. Для Windows 2000 такая поддержка прекращена. Хотя это не значит, что нельзя изменить эти значения вручную.

Резюме теоретической части

Теперь можно сделать алгоритм создания часового пояса для любой точки земного шара:

  1. Необходимо создать новый раздел реестра в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones для вашего часового пояса. В моем случае это Minsk Standard Time.
  2. Задать корректные значения параметров Display, Dlt, Std, TZI.
  3. Изменить часовой пояс на вновь созданный, каким- либо способом (далее описаны возможные варианты).

Скрипт для изменения часового пояса

Я написал для вас небольшой скрипт, который можно использовать для смены любого часового пояса. Чтобы изменить его под свой часовой пояс, необходимо изменять русскоязычное написание часового пояса  в кодировке OEM 866, а затем сохранить скрипт в кодировке ANSI 1251. Например, если вы используете для редактирования программу Notepad2, то редактирование с помощью быстрых клавиш будет выглядеть так:

  1. Открыть скрипт;
  2. Ctrl+A (Выделить все);
  3. Ctrl+Shift+O (Преобразовать текст в кодировку OEM 866);
  4. Отредактировать русскоязычные названия часового пояса и параметры для вашего часового пояса;
  5. Ctrl+A (Выделить все);
  6. Ctrl+Shift+A (Преобразовать текст в кодировку ANSI 1251);
  7. Ctrl+S (Сохранить)

Другие способы сохранения в кодировке OEM смотрите здесь.

Скачать скрипт можно с ftp на OsZone.net, либо с Rapidshare или Ifolder.

Немного о том, как работает скрипт. Он определяет Ваш текущий часовой пояс и делает резервную копию нужных разделов реестра. Путь к резервной копии: %Temp%\TZBY\дата и время запуска. Для восстановления прежних настроек необходимо запустить файл restore _tz.cmd.

Важно! При выходе официального обновления для часового пояса настоятельно рекомендуется восстановить старые настройки и затем применить обновление.

Затем скрипт изменяет часовой пояс в зависимости от версии ОС (XP/2003/Vista/7/2008R2) и языка (RUSENG).

Основной проблемой при изменении часового пояса через скрипт была установка этого пояса активным. В Windows XP/2003 и Windows 7 существуют утилиты командной строки tzchange и tzutil соответственно.

В Windows Vista такие утилиты отсутствуют, и сменить часовой пояс можно через GUI, либо попробовать изменение название временной зоны на требуемую командой

control timedate.cpl,,/Z Minsk Standard Time"

Также пользователям Windows 2000 можно воспользоваться специальной утилитой TzEdit (прямая ссылка на загрузку). для редактирования часового пояса вручную.

Есть еще способ сделать созданную зону активной - это явно указать ее название в параметре TimeZoneKeyName и перезагрузить компьютер. В Windows XP/2003 и Vista/7/2008R2 этот параметр находится в разных местах реестра:

В Windows XP/2003:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Time Zones

[REG_SZ] TimeZoneKeyName = Minsk Standart Time

В Windows Vista/7/2008R2:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

[REG_SZ] TimeZoneKeyName= Minsk Standart Time

Если вы хотите выполнить скрипт на всех компьютерах в организации, находящейся в домене, применяйте предпочтения групповых политик для настройки запуска скрипта, например, через планировщик заданий. Как это сделать, описано здесь.

В конце хотелось бы заметить, что ручное изменение часового пояса не решит проблем с такими программами как Exchange, Outlook, SQL и т.д. Для некоторых из этих программ уже есть утилиты или исправления, для других еще разрабатываются.




Источник: http://oszone.net/16420/Daylight_Saving_Time
Категория: Сборник советов | Добавил: Andrey (14-Октября-2011) | Автор: volk1234
Просмотров: 7045 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Переводчик сайта
Менюшка

Соц. сети
Вход
Теги

Для красивого отображения Облака
необходим
Adobe Flash Player 9
или выше
Скачать Adobe Flash Player

ОЗОН
OZON.ru
Друзья

Переводчик онлайн
Submitter.ru - Регистрация в поисковых системах!
Погода
Яндекс.Погода
Статистика






Онлайн всего: 1
Гостей: 1
Пользователей: 0

При использовании материалов сайта, наличие гиперссылки на сайт обязательно
© 2024
Яндекс.Метрика
Результаты антивирусного сканирования