Windowsパソコンがインターネットに接続されるようになってから、パソコンの時刻の調整はNTPという仕組みで行われるようになりました。
しかし、調整の間隔がデフォルトでは長すぎるので結構時刻が狂います。
調整間隔や調整先のサーバーはレジストリーの値を変更することで変えることができます。
※ここで説明する方法は手動でレジストリーを変更しますので、間違うとパソコンが不安定になる場合があります。そのことを理解したうえで行ってください。
即効版について
理屈などどうでもよいので、手早く設定したいという方はこちらの記事を参照願います。
資料
時刻の調整についての細かな記述は、下記のページに掲載されています。
- Windows XP で権限のあるタイム サーバーを構成する方法(Microsoft)
- Windows 2000 で権限のあるタイム サーバーを構成する方法(Microsoft)
古い資料ですが、レジストリーはWindows 10でも有効です。2番目の記述では調整に成功した場合、失敗した場合で間隔が変わる設定を説明していますが、こちらのレジストリーキーはデフォルトでは登録されていませんので、1番目の方法を使います。
また、こちらにも詳細に記されています。
時刻の調整間隔
[Windows]+[R]で「regedit.exe」を起動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \W32Time\TimeProviders\NtpClient\
の下の「SpecialPollInterval」の値を変更します。
値は秒単位で指定しますが、デフォルトでは、10進数で604,800、すなわち7日が指定されています。(Windows 10 バージョン1709では32,768=約9時間に変更されています)
Microsoftの推奨値は、10進数で900 (16進数で384)、すなわち15分です。
15分では短すぎると思う場合は電波時計の間隔を参考にすると良いでしょう。
カシオは1時間(10進数で3,600)、シチズンは2時間(10進数で7,200)、セイコーは3時間(10進数で10,800)です。
この設定をしないとパソコンの時計は腕時計や置時計より誤差が大きいように感じます。1時間(10進数で3,600)ぐらいが妥当なのかもしれません。
値を設定後、最初に調整が行われた後は、指定した間隔で調整されます。
(2016/5/6 追記)
Windows 7以降は、これだけではダメなようです。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \W32Time\Config
の下の「UpdateInterval」にもSpecialPollIntervalと同じ値を設定する必要があるそうです。デフォルトでは10進数で360,000、すなわち100時間が設定されていますので、10進数で900に変更します。
時刻調整先のNTPサーバー
Windows 8.1まではタスクバーの時計から変更できましたが、Windows 10ではコントロールパネルからしか変更できません。
「コントロールパネル」の「時刻、言語、および地域」をクリックし「日付と時刻」をクリックします。「日付と時刻」のダイアログが表示されるので「インターネット時刻」タブを選択し「設定の変更」をクリックします。「インターネット時刻設定」ダイアログが表示されるので「サーバー」にNTPサーバーを入力して「今すぐ更新」をクリックします。「時刻は正常に<NTPサーバー>と同期しました。:と表示されれば完了です。(コメントで頂いた情報から記事を修正しました)
レジストリーで変更する場合は同期方法も指定できます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \W32Time\Parameters\
の下の「NtpServer」の値を変更します。
デフォルトの値は、「time.windows.com,0x9」です。time.windows.comの部分を自分が指定するNTPサーバーに変更して、「,0x9」の部分はそのまま追加します。0x9はビットごとに意味を持っており、0x9とは0x8(明示的なClient/Server Modeによる同期方法)と0x1(Windows上のみ実装された定間隔での同期方法)を合わせた意味になるとのことです。詳細は上記の@ITの記事を参照願います。
ただし、下記の記事などを見ると0x9と設定した場合0x8と0x1のどちらを優先するのかが分かりません。
- SpecialPollInterval の誤解(サーバー管理者日誌)
- 時刻が大きく変更されないように Windows タイム サービスを構成する方法(Microsoft、レジストリ値 SpecialPollIntervalの説明の部分)
デフォルトのtime.windows.comは時刻調整に失敗することが多いため、日本のサーバーに変更した方がよいでしょう。
- 推奨公開サーバー(wiki@nothing)
例えばインターネットマルチフィードを使う場合は、「ntp.jst.mfeed.ad.jp,0x9」と設定します。
時刻調整を行うサービスである「Windows Time」サービスはデフォルトでは「手動(トリガー開始)」となっています。トリガーとは何かというと「Time Synchronization」というタスクがWindows Timeの起動と停止を行っているそうです。
- ワークグループ環境においてWindows Timeサービスが自動で起動する。(Microsoft)
ところが元々これらの機能がADでの時刻同期が目的のためか、個人用PCなどのワークグループ環境ではあまりうまく機能していないようです。PC間で時刻を同期させる必要が無いので当然なのですが時計が狂うのは困ります。
時刻同期を行うWindows Timeサービスを自動起動にしてもこのタスクによって止められる場合があるそうです。こちらの記事によると、
- Windows 7の環境でWindows Timeサービスが自動的に起動しないときの対処法(pirosapの備忘録)
「Windows Time」サービスの「スタートアップの種類」を「手動」から「自動(遅延開始)」にすればよいとのことです。
時刻の同期
暫くすれば指定したNTPサーバーと時刻の同期が行われますが、すぐに同期させる場合は、管理者権限でコマンドプロンプトを開き、
w32tm /resync
と入力します。
C:\WINDOWS\system32>w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。
成功すればこのように表示されます。
Windows 10では「設定」アプリの「時刻と言語」の「日付と時刻」で「時刻を自動的に設定する」を一度「オフ」にしてから「オン」に戻すことで即座に同期が行われます。
また、NTPサーバーの設定で説明したようにコントロールパネルからも同期させることはできます。
まとめ
一度設定すれば、変更する必要はありませんので、Windowsをアップグレードした場合や、新しいパソコンを買ったときに一度だけ設定することを覚えておけばよいでしょう。
初心者はわかる人に設定してもらってください。
コメント
Windows10のNTPサーバー変更はレジストリエディタ使わなくても出来ましたよ。
(コントロールパネルの日付と時刻からインターネット時刻の設定変更で直接入力)
コメントを頂き、ありがとうございます。
コントロールパネルから従来の設定が起動できることに気付きませんでした。ありがとうございます。
頂いた情報をもとに記事を修正させて頂きました。
初めまして
記事中の例にあげられている ntp1.jst.mfeed.ad.jp ですが、複数設定できる場合ですので、その点を説明するか ntp.jst.mfeed.ad.jp の方が無難じゃないでしょうか
自分はこの手の設定をまとめてエキスポートしていてOS再インストール等で一発設定できるようにしています
サービスの起動指定ですが、自動(遅延起動)はこれで出来るんじゃないかと思います
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time]
"Start"=dword:00000002
"DelayedAutostart"=dword:00000001
コメントを頂き、ありがとうございます。
御指摘頂いたように1台しか設定できない場合は「ntp.jst.mfeed.ad.jp」とのことですので記事を修正しました。
レジストリー設定については、サーバー設定も含めて早急に記述を追加致します。
「推奨値は、10進数で900、すなわち15分」と書かれていますが、電波時計の場合と比較することも含めて、NTPサーバの負荷を考えると短過ぎるのでは?
PC関連に詳しくない方も含め多くの方が見に来られるでしょうから、より適切な値を掲載される方が良いと思います。
それはともかく、NTP設定レジストリを改めようとして参考にさせて頂きました。分かりやすい記載ありがとうございます。
コメントを頂きありがとうございます。
NTPサーバーの負荷を考慮した設定は、パソコンの時計の精度とも関係しますので決めるのは難しいです。
したがって拠り所としてのMicrosoft推奨値です。
御意見を踏まえて少し表現を変えましたが、設定する人に任せたいと思います。