こんにちは、阿久津です。9月16日にiOS 9がリリースされましたが、内蔵時計の時刻がズレるという問題が発生しているのをご存じでしょうか。筆者のiPhone 6では30秒ほどズレていました(図01~02)。以前使っていたiPhone 4でも同様の問題が発生し、手動で時刻設定を変更するアプリを使っていたように記憶しています。OSのバージョンアップで繰り返し同じ問題が発生するのは閉口しますが、現時点では解決策は見つかっていません。

iPhone 6でチェックした状態。NTPサーバーの時刻から30秒ほどズレています

同じネットワーク内にあるPCは正しい時刻となっています

さて、WindowsはiPhoneのように携帯基地局ではなく、NTP(Network Time Protocol)サーバーから日時を取得し、正しい時刻に同期します。筆者も以前は独自のNTPサーバーを建ててネットワーク内のPCをすべて参照させていましたが、今では初期設定のtime.windows.comのまま運用しているPCも少なくありません(図03~04)。

Windows 10もNTPサーバーの設定は、コントロールパネルから起動する「日付と時刻」の<インターネット時刻>タブで行います

ビルド10547では、タイムゾーンを自動取得する仕組みが加わっています。ISPのDHCPサーバーから取得したIPアドレスで判断しているのでしょうか?

上図のとおりWindows 10でもNTPサーバーの設定箇所は、コントロールパネルの深い階層にあるため、ついつい忘れがちです。そこで今週はNTPサーバーの選択をレジストリから実行するチューニングをお送りします。

1. 管理者権限でレジストリエディターを起動します。
2. レジストリエディターが起動したら、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Serversキーを開きます。
3. 文字列値「1」を開き、データを「ntp.nict.jp」に変更します。
4. Serversキーのメニューから<エクスポート>を選択します。
5. 任意のファイル名でレジストリファイルを作成します。
6. 次にHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parametersキーを開きます。
7. 文字列値「NtpServer」を開き、データを「ntp.nict.jp,0x9」に変更します。
8. Parametersキーのメニューから<エクスポート>を選択します。
9. 任意のファイル名でレジストリファイルを作成します。
10. レジストリエディターを終了します。

これでチューニングが完了しました(図05~14)。

図05 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図06 レジストリエディターが起動したら、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\DateTime\Serversキーをたどって開きます

図07 文字列値「1」をダブルクリックし、データを「ntp.nict.jp」など使用するNTPサーバー名に変更して<OK>ボタンをクリックします

図08 Serversキーを右クリックし、<エクスポート>をクリックします

図09 「ファイル名」に任意の名前を入力し、<保存>ボタンをクリックします

図10 次にHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\W32Time\Parametersキーをたどって開きます

図11 文字列値「NtpServer」をダブルクリックし、データを「ntp.nict.jp,0x9」など使用するNTPサーバー名に変更して<OK>ボタンをクリックします

図12 Parametersキーを右クリックし、<エクスポート>をクリックします

図13 「ファイル名」に任意の名前を入力し、<保存>ボタンをクリックします

図14 <×>ボタンをクリックして、レジストリエディターを終了します

早速結果を確認してみましょう。まずはレジストリエントリーの変更を反映させるため、「w32tm /config /update」を実行します。この操作は、サービスをコマンドラインから制御するコマンド「sc」を使用し、「sc stop w32time && sc start w32time」でも構いません(図15~16)。

図15 [Win]+[X]キーを押すなどしてクイックアクセスメニューを開き、[A]キーを押します。もしくは<コマンドプロンプト(管理者)>をクリックしてください

図16 コマンドプロンプトが起動したら、「w32tm /config /update」と入力して[Enter]キーを押します

今度はNTPサーバーとの時刻同期を実行するため「w32tm /resync」を実行してください。続いて「w32tm /query /status」を実行して同期設定を確認しましょう。下図のとおり、「最終正常同期時刻」は最後にNTPサーバーと交信を行った時刻を示し、「ソース」は参照するNTPサーバーを示しています(図17~18)。

図17 続いて「w32tm /resync」と入力して[Enter]キーを押します。エラーが発生した場合は同じコマンドを再実行してください

図18 「w32tm /query /status」と入力して[Enter]キーを押します。「ソース」が「ntp.nic.jp」など指定したサーバーに変更されていれば成功です

ちなみに、ステップ7で指定したNTPサーバー名末尾の数値は具体的な同期方法を指定するというもの。「0x09」はクライアント&サーバー方式による同期と定間隔(Fixed Intervals)の同期という2つを指定します。なお、ステップ6~7の操作は「Windows Time」サービスに対する設定、ステップ2~3の操作は「日付と時刻」が正しく動作するために必要な操作となります(図19~20)。

図19 [Win]+[S]キーを押すなどして検索ボックスを開き、テキストボックスに「日付」と入力。「日付と時刻」をクリックします

図20 「日付と時刻」の<インターネット時刻>タブを開き、NTPサーバーとの交信が正しく行われているか確認します

後はレジストリファイルを1つにまとめておけば、OSの再インストールや他のPCへの設定適用も簡単になることでしょう。ポイントはParametersキーの文字列値「NtpServer」と、Serversキーの文字列値「1」。そして、Serversキーの既定値のデータが「1」になっているため、ステップ3で書き換えたNTPサーバーを参照しています(図21~22)。

図21 作成した2つのレジストリファイルをメモ帳などで開き、今回変更した部分を中心に1つのファイルにまとめます

図22 このようにまとめたレジストリファイルを各PCが参照できる共有フォルダーに保存しておけば、NTPサーバーの変更が簡単に行えます。コマンドライン操作もバッチファイルにまとめておきましょう

それでは、また次号でお目にかかりましょう。

阿久津良和(Cactus)