Войти

Показать полную графическую версию : [решено] Проблема с часовыми поясами.


Nomad_AlexSS
04-02-2020, 22:25
Имеется Windows 10 LTSC (10.0.17763.1012)

При установке всех обновлений Волгоград, почему-то остался в часовом поясе +3 вместе с Москвой, но и, дополнительно, добавился англоязычной позицией Volgograd со смещением +4. Мне, как перфекционисту, не понравилось сие безобразие, и я решил просто в реестре убрать слово Волгоград с московского пояса и русифицировать пояс +4 на Волгоград. Сейчас всё выглядит так:


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Volgograd Standard Time]
"Display"="(UTC+04:00) Волгоград"
"Dlt"="Volgograd Daylight Time"
"MUI_Display"="@tzres.dll,-2990"
"MUI_Dlt"="@tzres.dll,-2991"
"MUI_Std"="@tzres.dll,-2992"
"Std"="Volgograd Standard Time"
"TZI"=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

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Volgograd Standard Time\Dynamic DST]
"2010"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,\
00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
"2011"=hex:4c,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,01,00,06,00,01,00,00,00,\
00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
"2012"=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
"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
"2016"=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
"2017"=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
"2018"=hex:10,ff,ff,ff,00,00,00,00,3c,00,00,00,00,00,0a,00,00,00,05,00,02,00,\
00,00,00,00,00,00,00,00,01,00,01,00,01,00,00,00,00,00,00,00,00,00
"2019"=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
"FirstEntry"=dword:000007da
"LastEntry"=dword:000007e3


В настройках часов тоже всё верно, просто написано "(UTC +04:00) Волгоград". Как бы всё хорошо. Но дальше следуют странности.

В Steam и Skype (вполне возможно ещё где-то) я заметил, что время сообщений в чате отображается на 4 часа меньше, якобы у меня установлен просто пояс "UTC". Ставлю в настройках системы, к примеру, Саратов, то всё становится на круги своя. Но стоит вернуть Волгоград, так время в приложениях сразу уходит на 4 часа назад.

Далее выполняю команду:

C:\Windows\system32>w32tm /tz
Часовой пояс: Текущий:TIME_ZONE_ID_UNKNOWN Сдвиг: -240мин (UTC=LocalTime+Bias)
[Зимнее время:"" Сдвиг:0мин Дата:(не указано)]
[Летнее время:"" Сдвиг:-60мин Дата:(не указано)]

вместо названий просто пустые ковычки.

Вывод PowerShell:

PS C:\Users\KillerLex> Get-TimeZone


Id : Volgograd Standard Time
DisplayName : (UTC+04:00) Волгоград
StandardName : Volgograd Standard Time
DaylightName : Volgograd Daylight Time
BaseUtcOffset : 04:00:00
SupportsDaylightSavingTime : True

Тут всё нормально. Дальше, после выполнения команды Set-TimeZone "Volgograd Standard Time" всё становится в порядке везде; и в чатах и в системе стоит так же "(UTC+04:00) Волгоград". Вывод Get-TimeZone так же соответствует тому, что я написал выше. Так же выполнил повторно команду в консоли, но получил теперь верный результат:

C:\Windows\system32>w32tm /tz
Часовой пояс: Текущий:TIME_ZONE_ID_UNKNOWN Сдвиг: -240мин (UTC=LocalTime+Bias)
[Зимнее время:"Volgograd Standard Time" Сдвиг:0мин Дата:(не указано)]
[Летнее время:"Volgograd Daylight Time" Сдвиг:-60мин Дата:(не указано)]

Но если я сменю пояс через GUI на какой-нибудь, а потом верну обратно Волгоград, то всё опять ломается. Ставить Волгоград корректно я могу только через PowerShell!

Это какой-то баг или я что-то накрутил не так ? Есть возможность исправить поведение установки Волгограда через GUI ?

Nomad_AlexSS
05-02-2020, 18:02
Кажется разобрался.. Нужно удалить следующие строки:
"MUI_Display"="@tzres.dll,-2990"
"MUI_Dlt"="@tzres.dll,-2991"
"MUI_Std"="@tzres.dll,-2992"

В итоге раздел реестра выглядит так:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Volgograd Standard Time]
"Display"="(UTC+04:00) Волгоград"
"Dlt"="Волгоград (лето)"
"Std"="Волгоград (зима)"
"TZI"=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

Как я понял в Windows 10 какая-то беда с библиотекой tzres.dll.mui. Похоже что Microsoft забыла обновить локализацию часовых поясов, так как некоторые пояса написаны с ошибками, а ресурсов 2990-2992 в помине тут нет. При установке пояса из GUI система пытается считать значения из данной библиотеки, но в итоге ставит пустоту так как искать нечего. Можно удалить ссылки на MUI, внести все исправления названий поясов напрямую в реестре и всё будет работать, но если сменим язык интерфейса системы на отличный от русского, то этот пояс (по идее ?) останется русским.




© OSzone.net 2001-2012