Windowsの時計が微妙にズレるやつの修正方法

Windowsの再インストールの際など毎回調べるのが面倒なのでメモ

スタンドアローンな環境だとデフォルトで時刻あわせは週に一度だけ行われる。Windows10以降で何か変わったのかどうかは知らないけどたぶん変わっていないだろう。
数台のデスクトップを同時に使用する場合などに目の届く範囲の時計の時刻が揃っていないとカップ麺の仕上がりに影響が出たり時空のねじれを感じる時があるので気がつかないうちに精神を蝕んでいる可能性がある。

これをコピペして実行してねのやつ

管理者権限のコマンドプロンプトかPowershellへ一行ずつコピペ実行でも全部コピペでもおk
batファイル作っておくと便利かもね

net stop w32time
sc triggerinfo w32time delete
w32tm /unregister
w32tm /register
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v UtilizeSslTimeData /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v Type /t REG_SZ /d "NTP" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v NtpServer /t REG_SZ /d "ntp.nict.jp,0x8" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MinPollInterval /t REG_DWORD /d "6" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d "3600" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSecondsInSystemClock /t REG_DWORD /d "1" /f
sc triggerinfo w32time start/networkon stop/networkoff
net start w32time
w32tm /query /configuration

一行ずつ説明

net stop w32time
タイムサービスの停止

sc triggerinfo w32time delete
タイムサービスのトリガーを削除

w32tm /unregister
タイムサービス関連の設定を削除

w32tm /register
タイムサービス関連の規定値を復元

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v UtilizeSslTimeData /t REG_DWORD /d 0 /f
Secure Time Seeding(SSL通信のメタデータからおおよその日時を取得する機能)の停止
マイクロソフトはNTPと時刻同期する場合にSecure Time Seedingを停止することを強く推奨している。1

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v Type /t REG_SZ /d "NTP" /f
NTPサーバーと同期する設定

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v NtpServer /t REG_SZ /d "ntp.nict.jp,0x8" /f
NTPサーバーntp.nict.jpと同期する設定
0x8を指定することで自動で適切な間隔で問い合わせするようになる(RFC1305)

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v MinPollInterval /t REG_DWORD /d "6" /f
最小の問い合わせ間隔を2のx乗で指定
6を指定した場合は2^6=64秒

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d "3600" /f
今回の設定ではここで指定した数値は無視されるが、何か変な事が起こる事例2があるのでまじないとして設定

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSecondsInSystemClock /t REG_DWORD /d "1" /f
タスクトレイの時計に秒数を表示する
要らん人は要らん

sc triggerinfo w32time start/networkon stop/networkoff
タイムサービス開始のトリガーを設定
この設定ではDHCPサーバーからIPアドレスを取得するとトリガー開始となる
考えて見ればインターネットに接続しないでNTPサーバーにアクセスするとか稀なので規定値がコレでも良いんじゃねえのって思う

net start w32time
タイムサービスの開始

w32tm /query /configuration
タイムサービスの設定確認

日付と時刻の設定画面などで設定変更すると変更したレジストリが戻ってしまうので注意

  1. https://learn.microsoft.com/ja-jp/windows-server/networking/windows-time-service/configuring-systems-for-high-accuracy ↩︎
  2. https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/active-directory/w32time-sync-specialpollinterval-ignored ↩︎

コメント

タイトルとURLをコピーしました