Несмотря на моё скептическое отношение к семейству Windows, иногда приходится разбираться с некоторыми проблемами, которые могут иметь место в этой ОС.
При очередном включении домашнего компьютера под управлением Windows 7 мне поступила претензия в отсутствии Интернет. При этом браузер обращал внимание на то, что время на локальном компьютере отличается, а так как сертификаты ...
Короче говоря, весь сыр бор объяснялся тем, что в материнской плате "скисла" батарейка и система стала "жить" в 2008 году.
Так как новой батарейки под рукой, естественно, не оказалось, то стал вопрос о желательности синхронизации времени через Интернет после включения компьютера и загрузки операционной системы. Казалось бы, простая ситуация и её разрешение возможно в 2 клика мышкой, но нет – сюрприз.
Несмотря на правильные установки параметров времени, и даже назначение ближайшего сервера времени вместо, например, time.windows.com ситуация не изменилась. Время не синхронизировалось по причине сбоя синхронизации.
"Корень зла" содержится в том, что при расхождении времени между локальным компьютером и временем Интернет более чем в 15 часов служба синхронизации времени перестаёт осуществлять операцию коррекции имеющегося в системе времени на правильное.
Для решения этой проблемы в настройки Windows, содержащиеся в реестре, необходимо внести ряд изменений.
Перейдите в ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config
Найдите MaxNegPhraseCorrection и MaxPosPhraseCorrection и установите им шестнадцатиричные значения ffffffff (буква f 8 раз подряд), которые являются максимально допустимыми.
Примечание. Первоначальными значениями являются 0x0000d2f0
На всякий случай, проверьте значение LargePhraseOffset
Выставьте интервал обновления, исходя из того, что в десятичном формате оно указывает количество секунд, по истечении которых будет произведено очередное обращение с серверу точного времени.
HCLM\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient
Найдите параметр SpecialPollInterval. Он как раз и определяет, с какой периодичностью клиент обращается к серверу точного времени. Значение параметра установлено в секундах.
Измените интервал в десятичной системе исчисления из расчёта:
1 минута = 60 секунд,
1 час = 60 минут = 3600 секунд,
1 сутки = 24 часа = 1440 минут = 86400 секунд.
На одном из ресурсов, посвящённом описанию механизма синхронизации времени в Windows, было отмечено, что если этот интервал меньше значения 14400 (240 минут = 4 часа), то сервер NTP может поставить IP-адрес в бан по причине большого числа запросов. Насколько это соответствует истине – мне не известно. Но шлюз на MikroTik по своему алгоритму проверяет соответствие своих часов по 4-6 раз за час.
Укажите адрес источника точного времени, на который будет обращаться Ваш компьютер для осуществления синхронизации времени.
В приведенном примере адрес сервера точного времени time.net.org. Такого сервера в действительности не существует, он является локальным сервером времени, расположенном на роутере MikroTik. Для своих нужд найдите ближайший к себе сервер точного времени.
Например, можно воспользоваться сведениями, указанными на http://www.ntp-servers.net, http://www.timeserver.ru, http://gladilov.org.ru/ntp
Упомянутые выше изменения в реестре Windows можно внести одним файлом c расширением reg. Создайте в блокноте файл с содержанием:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32Time\Config]
"MaxNegPhraseCorrection"=dword:ffffffff
"MaxPosPhraseCorrection"=dword:ffffffff
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32Time\Parameters]
"NtpServer"="time.net.org,0x01"
Сохраните его как, например, Timecorrect.reg После этого его можно запустить и необходимые изменения будут записаны в реестр. Значение "NtpServer"="time.net.org,0x01" измените на своё (см. текст выше). Скачать этот файл.
Если Ваш брандмауэр работает в конфигурации очень высокой безопасности, то можете создать в нём разрешающие правила для входящих и исходящих подключений на протокол UDP порт 123.
Для коррекции времени можно использовать файл с расширением bat, содержание которого составляет строка: w32tm /resync Этот файл bat должен быть запущен под правами администратора системы (запуск от имени администратора).
Создайте в блокноте текстовый файл с содержанием w32tm /resync и сохраните его как файл с расширением bat, например, timesync.bat
Но, как показала практика, и запуска этого файла оказалось мало. Командная строка выдала:
Обнаружена следующая ошибка: Служба не запущена (0x80070426)
Оказывается, служба времени в Windows 7 (в Windows XP было иначе) не будет отключаться только в том случае, если она была запущена вручную через окно "Службы" или с помощью кнопки синхронизации "Обновить сейчас" в окне "Время и дата".
Чтобы исправить эту ситуацию, в командной строке (с правами администратора), введите следующие команды:
1. net stop w32time – останавливаем службу времени, если запущена.
2. w32tm /debug /disable – отключаем режим отладки.
3. w32tm /unregister – удаляем регистрацию службы.
4. w32tm /register – снова регистрируем службу.
5. sc triggerinfo w32time start/networkon stop/networkoff – указываем запуск службы при подключении к сети и остановку при отключении от сети.
После команды 5 Вы должны увидеть:
[SC] ChangeServiceConfig2: успех
Перезагрузка.
Пробуем снова в командной строке с правами администратора запустить bat-файл с содержанием:
w32tm /resync
pause
Вторая строка pause необходима для того, чтобы увидеть результат выполнения команды w32tm /resync.
Так и хочется воскликнуть: боже мой, как всё запущено! А ведь исходя из описания службы можно подумать, что она, всё-таки, работает после старта системы, хотя и с задержкой:
Теперь возвращаюсь к вопросу коррекции времени. Так как служба времени будет стартовать только после появления сети (которая не совсем сразу появляется, а только после получения адреса IP), то саму коррекцию надо немного задержать.
Простым способом реализации запуска с задержкой после старта системы является ПО Startup delayer. Описание можно почитать здесь. По запросу в поисковике сразу найдётся большой выбор источников, с которых эту программу можно скачать.
Итак, в моём случае коррекция времени производится через 4 минуты и 15 секунд после старта системы.
А установленное время корректируется через каждый час:
Некоторые сведения, которые были использованы при разбирательстве с вопросом о синхронизации времени в Windows 7 Вы можете найти в приводимых выдержках с Интернет, которые опубликованы на этой странице.
При очередном включении домашнего компьютера под управлением Windows 7 мне поступила претензия в отсутствии Интернет. При этом браузер обращал внимание на то, что время на локальном компьютере отличается, а так как сертификаты ...
Короче говоря, весь сыр бор объяснялся тем, что в материнской плате "скисла" батарейка и система стала "жить" в 2008 году.
Так как новой батарейки под рукой, естественно, не оказалось, то стал вопрос о желательности синхронизации времени через Интернет после включения компьютера и загрузки операционной системы. Казалось бы, простая ситуация и её разрешение возможно в 2 клика мышкой, но нет – сюрприз.
Несмотря на правильные установки параметров времени, и даже назначение ближайшего сервера времени вместо, например, time.windows.com ситуация не изменилась. Время не синхронизировалось по причине сбоя синхронизации.
"Корень зла" содержится в том, что при расхождении времени между локальным компьютером и временем Интернет более чем в 15 часов служба синхронизации времени перестаёт осуществлять операцию коррекции имеющегося в системе времени на правильное.
Для решения этой проблемы в настройки Windows, содержащиеся в реестре, необходимо внести ряд изменений.
Перейдите в ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config
Найдите MaxNegPhraseCorrection и MaxPosPhraseCorrection и установите им шестнадцатиричные значения ffffffff (буква f 8 раз подряд), которые являются максимально допустимыми.
Примечание. Первоначальными значениями являются 0x0000d2f0
На всякий случай, проверьте значение LargePhraseOffset
Выставьте интервал обновления, исходя из того, что в десятичном формате оно указывает количество секунд, по истечении которых будет произведено очередное обращение с серверу точного времени.
HCLM\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient
Найдите параметр SpecialPollInterval. Он как раз и определяет, с какой периодичностью клиент обращается к серверу точного времени. Значение параметра установлено в секундах.
Измените интервал в десятичной системе исчисления из расчёта:
1 минута = 60 секунд,
1 час = 60 минут = 3600 секунд,
1 сутки = 24 часа = 1440 минут = 86400 секунд.
На одном из ресурсов, посвящённом описанию механизма синхронизации времени в Windows, было отмечено, что если этот интервал меньше значения 14400 (240 минут = 4 часа), то сервер NTP может поставить IP-адрес в бан по причине большого числа запросов. Насколько это соответствует истине – мне не известно. Но шлюз на MikroTik по своему алгоритму проверяет соответствие своих часов по 4-6 раз за час.
Укажите адрес источника точного времени, на который будет обращаться Ваш компьютер для осуществления синхронизации времени.
В приведенном примере адрес сервера точного времени time.net.org. Такого сервера в действительности не существует, он является локальным сервером времени, расположенном на роутере MikroTik. Для своих нужд найдите ближайший к себе сервер точного времени.
Например, можно воспользоваться сведениями, указанными на http://www.ntp-servers.net, http://www.timeserver.ru, http://gladilov.org.ru/ntp
Упомянутые выше изменения в реестре Windows можно внести одним файлом c расширением reg. Создайте в блокноте файл с содержанием:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32Time\Config]
"MaxNegPhraseCorrection"=dword:ffffffff
"MaxPosPhraseCorrection"=dword:ffffffff
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32Time\Parameters]
"NtpServer"="time.net.org,0x01"
Сохраните его как, например, Timecorrect.reg После этого его можно запустить и необходимые изменения будут записаны в реестр. Значение "NtpServer"="time.net.org,0x01" измените на своё (см. текст выше). Скачать этот файл.
Если Ваш брандмауэр работает в конфигурации очень высокой безопасности, то можете создать в нём разрешающие правила для входящих и исходящих подключений на протокол UDP порт 123.
Для коррекции времени можно использовать файл с расширением bat, содержание которого составляет строка: w32tm /resync Этот файл bat должен быть запущен под правами администратора системы (запуск от имени администратора).
Создайте в блокноте текстовый файл с содержанием w32tm /resync и сохраните его как файл с расширением bat, например, timesync.bat
Но, как показала практика, и запуска этого файла оказалось мало. Командная строка выдала:
Обнаружена следующая ошибка: Служба не запущена (0x80070426)
Оказывается, служба времени в Windows 7 (в Windows XP было иначе) не будет отключаться только в том случае, если она была запущена вручную через окно "Службы" или с помощью кнопки синхронизации "Обновить сейчас" в окне "Время и дата".
Чтобы исправить эту ситуацию, в командной строке (с правами администратора), введите следующие команды:
1. net stop w32time – останавливаем службу времени, если запущена.
2. w32tm /debug /disable – отключаем режим отладки.
3. w32tm /unregister – удаляем регистрацию службы.
4. w32tm /register – снова регистрируем службу.
5. sc triggerinfo w32time start/networkon stop/networkoff – указываем запуск службы при подключении к сети и остановку при отключении от сети.
После команды 5 Вы должны увидеть:
[SC] ChangeServiceConfig2: успех
Перезагрузка.
Пробуем снова в командной строке с правами администратора запустить bat-файл с содержанием:
w32tm /resync
pause
Вторая строка pause необходима для того, чтобы увидеть результат выполнения команды w32tm /resync.
Так и хочется воскликнуть: боже мой, как всё запущено! А ведь исходя из описания службы можно подумать, что она, всё-таки, работает после старта системы, хотя и с задержкой:
Теперь возвращаюсь к вопросу коррекции времени. Так как служба времени будет стартовать только после появления сети (которая не совсем сразу появляется, а только после получения адреса IP), то саму коррекцию надо немного задержать.
Простым способом реализации запуска с задержкой после старта системы является ПО Startup delayer. Описание можно почитать здесь. По запросу в поисковике сразу найдётся большой выбор источников, с которых эту программу можно скачать.
Итак, в моём случае коррекция времени производится через 4 минуты и 15 секунд после старта системы.
А установленное время корректируется через каждый час:
Некоторые сведения, которые были использованы при разбирательстве с вопросом о синхронизации времени в Windows 7 Вы можете найти в приводимых выдержках с Интернет, которые опубликованы на этой странице.
К сожалению, ничего не выходит. Хотя [SC] ChangeServiceConfig2: успех - присутствует. А запуск команды синхронизации на локальный ПК (через командную строку) даёт такой ответ: Синхронизация не выполнена, поскольку нет доступных данных о времени.
ОтветитьУдалить