デバイスに正しい時刻を表示させるのは、特にタイムゾーンが正しく設定されていない場合や同期がうまくいかない場合、少し面倒なことがあります。Windowsはタイムゾーンを自動検出してすべてを自動的に調整するのが一般的ですが、PCを別の場所に移動した場合や、アップデートによって設定が変わってしまった場合など、これが逆効果になることがあります。このガイドは、間違った時刻が表示されたり、設定を変更しようとしたときに権限エラーが発生したりすることにうんざりしている方のためのものです。お使いの環境に応じて、複数のコンピューターでタイムゾーンを手動で設定、確認、さらには一元管理する方法を学習します。
Windowsのタイムゾーンの問題を修正する方法
コントロールパネルまたは設定アプリを使用してタイムゾーンを変更する
これはほとんどの人にとって頼りになる方法で、設定の変更が権限によってブロックされていない限り、通常は問題なく機能します。システムトレイの時計をクリックして「日付と時刻の調整」を選択するか、 「ファイル名を指定してms-settings:dateandtime実行」ダイアログ ( Windows + R) で実行することで、新しい設定パネルを開くことができます。ここで「タイムゾーンを自動的に設定する」が有効になっている場合は、まず無効にしてください。次に、ドロップダウンメニューから正しいタイムゾーンを選択します。一部の設定、特にWindows Serverでは、この操作でエラーが発生する可能性があります。その場合は権限が関係するため、管理者権限またはグループポリシーの変更が必要になります。
従来のコントロールパネルを使いたい場合は、 を実行してくださいtimedate.cpl。Windows ではオプションが旧式のメニューの後ろに隠れているように感じることもありますが、試してみる価値はあります。手動での変更がブロックされている場合は、権限の問題である可能性が高いので、管理者に修正を依頼してください。ローカルセキュリティポリシーまたはセキュリティ設定でアカウントの権限を確認してください。
「権限がありません」というエラーが表示された場合の権限の修正
これはよくある問題で、特にWindows Server 2019または2022でタイムゾーンを変更しようとする際によく発生します。このエラーは通常、アカウントに適切な権限がないことが原因です。gpedit.msc(ローカルグループポリシーエディター)を開き、「コンピューターの構成」>「Windowsの設定」>「セキュリティの設定」>「ローカルポリシー」>「ユーザー権利の割り当て」に移動します。 「タイムゾーンの変更」というポリシーを見つけ、Administratorsグループがない場合は追加します。「適用」をクリックし、管理者コマンドプロンプトを開いてtimedate.cpl再度実行すると、タイムゾーンを変更できるようになります。Windowsは新しい権限の適用に手間取ることがあるため、再起動すると改善される場合もあります。
tzutil.exe を使用してコマンドラインからタイムゾーンを管理する
UIで権限エラーが発生した場合や、簡単なスクリプトを実行したい場合、これは非常に役立ちます。コマンドプロンプトを管理者として開きます。ただのプロンプトではなく、必ず管理者権限で実行してください。tzutil /g現在設定されている内容を確認したり、tzutil /l利用可能なゾーンの完全なリストを表示したりするコマンドを調べてみてください。Windowsには何百ものゾーンがあり、必ずしも分かりにくいからです。適切な名前がわかれば、 を使ってゾーンを素早く切り替えることができます。注:リストはWindowsのバージョンによって異なる場合がありますので、 Microsoftのドキュメントtzutil /s "Eastern Standard Time"で完全なリストを確認してください。
特定のゾーンで夏時間を無効にしたいですか?_dstoffを追加してみてください。つまり、 ですtzutil /s "Central European Standard Time_dstoff"。これで季節ごとの時計のシフトが無効になります。これは一種のハックですが、環境によっては便利です。ちなみに、現在の夏時間の設定を確認したい場合は を実行してくださいw32tm /tz。このコマンドを実行すると、Windowsがタイムゾーンと夏時間情報をどのように認識しているかが表示される場合があります。
PowerShellでタイムゾーンを設定する
これは、特に複数のサーバーを管理している場合、変更を自動化またはスクリプト化する優れた方法です。現在のゾーンは で確認できます。このコマンドは、太平洋標準時Get-TimeZoneのようなIDを表示します。マシンで利用可能なすべてのタイムゾーンを一覧表示するには、 を実行します。お住まいの地域に近いゾーンをお探しですか? のようなフィルターを使用してください。適切なゾーンが見つかったら、 で変更します。Get-TimeZone -ListAvailableGet-TimeZone -ListAvailable | Where-Object { $_. DisplayName -like "*Canada*" }Set-TimeZone -Name "US Eastern Standard Time"
リモート管理の場合は、テキストファイルからサーバー名をパイプで指定します。これにより、管理者は現場に出向くことなく変更をプッシュできます。ただし、PowerShellは管理者権限で実行する必要があることに注意してください。そうしないと、システム設定の変更が拒否される可能性があります。特にWindows 11などの新しいバージョンや制限された環境では注意が必要です。 $servers = get-content C:\ps\server_list.txt Invoke-Command -ComputerName $servers -ScriptBlock { Set-TimeZone -Name "West Asia Standard Time" }
グループポリシーによるタイムゾーンの制御
多数のマシンを管理している場合、GPO経由で設定を行うと大幅に時間を節約できます。タイムゾーンに関する分かりやすいGPO設定が組み込まれていないため、通常はスクリプトまたはレジストリ設定をプッシュします。上記のPowerShellコマンドを使用してログオンスクリプトを作成するか、正しく設定されているベースラインコンピュータからレジストリキーをインポートできます。HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation必要な設定になっているマシンからレジストリキーをエクスポートし、それをレジストリ設定としてGPOにインポートします。
大規模な環境では、GPO でアイテムレベルのターゲット設定を使用することで、AD サイトやセキュリティグループに基づいて異なるゾーンを割り当てることができます。また、ユーザーがリモートデスクトップ経由で異なるタイムゾーンのサーバーに接続する場合は、 RDP グループポリシーで「タイムゾーンのリダイレクトを許可する」を有効にすることで、リモートセッションにユーザーのローカル時刻が表示されるようになります。少し奇妙ですが、実際に機能します。
全体的に見て、時刻表示の修正は、特に権限が絡む場合は、ワンクリックで済むようなものではありません。しかし、適切なコマンド、管理者権限、そして少しの忍耐があれば、適切なタイムゾーンを設定でき、ログ、予定、スケジュールを常に一致させることができます。
まとめ
- 「タイムゾーンを自動的に設定」が有効になっているかどうかを確認し、必要に応じて無効にします。
timedate.cplすばやく変更するには、または設定アプリを使用します。- 特にサーバー上で、アカウントに適切な権限があることを確認してください。
tzutil一括変更のスクリプトを作成する場合は、または PowerShell などのコマンドを利用します。- 大規模な環境の場合は、グループ ポリシーまたはレジストリのインポートを介して設定をプッシュします。
まとめ
タイムゾーンをいじるのは面倒な作業です。Windowsは、特にサーバーやドメインに参加しているマシンでは、権限や設定が必ずしも明確ではありません。しかし、権限さえ整理してしまえば、手動でタイムゾーンを切り替えたり、スクリプトを使って自動化したりするのはそれほど難しくありません。Windowsの自動検出機能は便利ですが、かえって状況を悪化させてしまうこともあるので、手動で設定する方が得策です。これで誰かのアップデートが1つ進み、時計がようやく正常に戻ることを祈っています。