Windows 10の時刻ずれ(1時間オフセット)を修正する方法 – デュアルブート環境向け完全チュートリアル
興味深い現象に気づきました。複数のLinuxディストリビューションとWindows 10をマルチブートしているLenovo G50マシンで、MicrosoftのOSを起動するたびに、時刻が必ず1時間ずれてしまうのです。タイムゾーンは正しく設定されているのに、画面右下のデジタル時計だけが60分も狂ったまま表示されます。
いろいろと調査を進めるうちに、この問題についてまとまったチュートリアルを書く価値があると感じました。実はこの問題は、他のOSとの組み合わせとは無関係に、Windows 10を単体で使用している環境でも発生する可能性があります。いずれの場合でも、この記事ではWindows側での解決策と、問題への具体的な対処法に焦点を当てて解説していきます。
問題の原因となりうる要因
Windows 10の時刻がずれてしまう原因は実にさまざまです。多くの人は「これは一般的な問題で、自分のケースも同じはずだ」と思いがちですが、実際にはそう単純ではありません。ファイアウォールの設定、Windowsタイムサービスの不具合、時刻同期の失敗など、考えられるシナリオは複数存在します。すべての原因を事前に把握することは困難ですが、それぞれ適切に対処することは十分可能です。
特にデュアルブート環境では、いくつかの基本概念を理解しておくことが重要です。このトピックについてはUbuntuのヘルプドキュメントでも詳しく解説されています。ポイントとなるのは、現代のコンピュータはすべて、いわゆるハードウェアクロック(RTC)に時刻を保存しているという点です。これはチップセットの一部であり、小さなボタン電池によって駆動されているため、本体を電源から切り離しても数か月程度は正しい日付と時刻を保持できます。OSは通常、シャットダウン命令を受けたタイミングでこの値を更新します。あるいは、起動時にハードウェアクロックの値を参照して利用することもあります。
ここで重要な違いが生じます。ほとんどのLinuxディストリビューションはハードウェアクロックをUTC(協定世界時)に設定します。一方、Windowsは通常ローカル時刻を使用しており、これはユーザーが選択したタイムゾーンに対応します。サマータイム(DST)などでタイムゾーンが変わると、ローカル時刻には1時間のオフセットが発生しますが、UTCは常に一定であり、DSTやタイムゾーン変更の影響を受けません。そのため、LinuxからWindowsへ再起動した直後、Windowsが時計を同期し終えるまでの間、時刻が1時間ずれた状態になるのです。これが今回の問題の正体です。
Windowsの時刻オフセットを修正する
解決策の一つとして、Linux側がハードウェアクロックに保存する時刻の種類をUTCからローカル時刻へ変更する方法があります。ただし今回はそれを行わず、Windows側の動作を調整するアプローチを採ります。
つまり、Windowsにローカル時刻を使わせないようにする、あるいは同期頻度を上げるということです。具体的な方法は2つあります。
- レジストリを変更してUTCを使用させる – ただしWindowsタイムサービスを停止する必要があり、その結果Windows自身が時計を更新しなくなる可能性があります。
- 時刻同期をデフォルトより高頻度で実行する – デフォルトの同期間隔はWindows 7/8では1週間、Windows 10では1日に短縮されています。これをさらに短縮します。
両方の方法を紹介しますので、ご自身の環境に合った方を選んでください。個人的には2番目の方法の方がエレガントだと考えています。
方法1:WindowsをUTCに設定する(レジストリ変更)
まずレジストリエディターを開き、以下のキーへ移動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Control\TimeZoneInformation
次に、RealTimeIsUniversal というDWORD値を作成(または既存の値を編集)し、値を 1 に設定します。
設定後、PCを再起動して時刻が正しく表示されるか確認してください。もし改善しない場合は、Windowsタイムサービスを無効化する必要があるかもしれません。
方法2:時刻同期用のスケジュールタスクを作成する
こちらの方法では、ログオン時に自動的に実行され、時刻を同期するスケジュールタスクを作成します。設定手順はやや複雑ですが、確実に問題を解決できます。詳細を見ていきましょう。
タスクスケジューラを開き、「タスクの作成」を選択します。タスクの配置場所はどこでも構いません。「全般」タブでタスク名と説明を入力し、実行ユーザーを選択します。ここが少し注意が必要なポイントです。筆者の環境では制限付き(標準)アカウントで作業していたため、Administratorアカウントを指定する必要がありました。その際、「ユーザーがログオンしているかどうかにかかわらず実行する」を選びますが、パスワードの保存は不要です。必要なのはローカルリソースへのアクセスだけだからです。また、「構成対象」でWindows 10を選択しておきましょう。
続いて、新しいトリガーを追加します。トリガーは「いつ実行するか」を定義するもので、ここでは「ログオン時」を指定します。
次に、2つのアクションを設定します。
- アクション1: Windowsタイムサービスが未起動の場合に備えて開始します。プログラム:
%windir%\system32\sc.exe、引数:start w32time task_started - アクション2: 時刻を再同期します。プログラム:
%windir%\system32\w32tm.exe、引数:/resync
最後に、条件タブで「AC電源でもバッテリーでも実行する」にチェックを入れ、ネットワーク接続に関する条件も「任意の接続」に設定します。「OK」をクリックして保存すれば、次回のログオンからは時刻ずれの心配はなくなります。
手動で時刻を同期する方法
いつでも手動で時刻を同期することも可能です。システム設定やコントロールパネルから「日付と時刻」を開くか、システムトレイの時計を右クリックして「日付と時刻の調整」を選択します。次に「インターネット時刻」タブを開き、「今すぐ更新」ボタンをクリックすれば、即座にNTPサーバーと同期されます。
まとめ
以上が解決手順です。実際の環境がシングルブート、デュアルブート、マルチブートのいずれであっても、この記事で扱うのはWindows 10側の設定のみです。目的は正しい時刻を維持することであり、そのための選択肢は2つあります。システムにUTCを使用させる方法と、ログオン時に自動的に時計を再同期するスケジュールタスクを作成する方法です。どちらも比較的安全な手法ですが、一般的には後者の方がシステムへの影響が少なく、推奨できるアプローチです。
このチュートリアルが皆さんの参考になれば幸いです。些細ながらも放っておけない時刻ずれの問題で悩む時間を、少しでも減らすことができれば嬉しく思います。大多数の方はめったに遭遇しない問題かもしれませんが、万一遭遇したときのために、解決策はすべてここにまとめておきました。それでは、また次回。
-
Windows 10 エクスプロイト保護 - チュートリアル
Windows 10 Fall Creators Update (ビルド 1709) のリリースにより、最も優れた洗練された Enhanced Mitigation Experience Toolkit (EMET) が利用できなくなったか、このオペレーティング システムにインストールできなくなりました。代わりに、これらの軽減策は Windows 10 の不可欠な部分になりました。 私は EMET の大ファンであり、すべての Windows マシンで EMET を使用しているため、Windows 10 で新しい軽減策を展開して調整する方法について、詳細で実用的かつ実際の使用ガイドを作成するこ
-
Windows 7のKB4474419更新プログラムが失敗する問題と解決方法
Windows 7のサポート終了は目前に迫っています。しかし、それでもこの名OSで初めてとなるWindows Updateの失敗を経験することになりました。これが何かの前兆なのかは分かりません。実は、約1年間使用していなかった古いノートパソコンがあり、久しぶりにWindows Updateを実行してみたのです。最初に必要だったのは、今後のロールアップをインストールできるようにするための新しい暗号署名パッチでした。 Windows Update経由でKB4474419のインストールを促されたので、早速実行しました。一見順調に進んでいるように見えたのですが、70%ほど進んだところで「更新の構成に失