[ホーム] - [バッチファイル サンプル一覧] - [Windows で時刻がずれる原因と対処]

Windows で時刻がずれる原因と対処 | Windows バッチファイル






Windows 10 環境において一般的な個人 PC はインターネット上の NTP サーバと同期を行います。これにより常に正しい時刻を設定することができます。
(PCには電池が内蔵されPCが電源オフのときも時刻を記憶していますが、時間が経過すると少しずつ時刻がずれてしまいます。)

この現象を防止するために一定間隔でインターネット上のNTPサーバと時刻同期を行っています。
このページではこのような場合に同期状態を確認する方法や強制的に時刻を同期する方法を紹介します。


サンプルコード集

以下は Windows 10 環境におけるサンプルコードと実行結果です。


時刻同期の状態を確認するには以下のコマンドを実行します。

"ソース"を確認してください。time.windows.comと同期していることが分かります。
"最終正常同期時刻"を確認してください。"2020/04/23 9:48:06"に正常に同期したことが分かります。

もしソースが "Local CMOS Clock" となっている場合はNTPと同期が出来ていない可能性があります。インターネットとの同期ではなくローカルのCMOS(BIOSの状態をPC電源オフの場合でも保存できるメモリ)と同期しているとうことです。
ドメインに参加したPCでドメインに参加できない場合やレジストリに直接設定がされている場合はこのようになるようです。


サンプルコード:

w32tm /query /status

実行結果:


c:\>w32tm /query /status
閏インジケーター: 3 (同期未実行)
階層: 0 (未指定)
精度: -23 (ティックごとに 119.209ns)
ルート遅延: 0.1634657s
ルート分散: 8.9732734s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 2020/04/23 9:48:06
ソース: time.windows.com,0x9
ポーリング間隔: 10 (1024s)





NTPの構成を確認するには以下のコマンドを実行します。管理者で開いたコマンドプロンプトで実行してください。通常のコマンドプロンプトでは"次のエラーが発生しました。 アクセスが拒否されました。 (0x80070005)"と表示されます。

サンプルコード:

w32tm /query /configuration

実行結果:


c:\>w32tm /query /configuration
[構成]

<中略>

[タイム プロバイダー]

<中略>




手動で強制実行するには以下のコマンドを実行します。"コマンドは正しく完了しました。"と表示されたら成功です。


サンプルコード:

w32tm /resync

実行結果:


c:\>w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。




同期間隔を変更するにはレジストリ値を変更します。以下のキーを修正します。

キー:HKLM\SYSTEM\Current Control Set\Services\W32Time\TimeProviders\NtpClient]
値:SpecialPoolInterval
データ:同期間隔秒 (初期値は10進数で86400秒 , 16進数で15180秒)

86400秒は1日。


あまり頻度を多くするとNTPサーバに負荷がかかるためこの値を小さくすることは検討が必要ですそんなに時刻もずれるものではないので1日で十分でしょう。

サンプルコード:









本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [バッチファイル サンプル一覧]