web-dev-qa-db-ja.com

BIOSクロックを処理するときにWindows 8にUTCを使用させる

ノートパソコンにArch Linux + Windows 8をインストールしています。以前のバージョンのWindowsでは、DWORDがレジストリ(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal)ローカルタイムとUTCを切り替えますが、これはWindows 8で動作していないようです。

BIOSが実際にUTC時間であるローカル時間を与えると考えているため、WindowsでUTC時間を取得しています。ArchLinuxで再起動すると、クロックはlocaltime-0400になります。これは、ArchがBIOSに正しいUTC時間があると考えるためです。

Arch Linuxにローカルタイムを使わせたくありません。この前提条件の下で、可能な解決策はありますか?

18
jiehanzheng

RealTimeIsUniversalは本当にバグが多く、公式に推奨されている解決策ではない(Win8でそれを無効にしたのはそのためか?)を参照してください IBM PC Real Time Clock should UTで実行 とRaymond Chenからの応答: なぜWindowsはBIOSクロックを現地時間に保つのですか? 。現時点では、これに対する適切な解決策はないと思います。

3
Karan

デフォルトのWindowsタイムサービスは、レジストリがUTCでの実時間であるかどうかに関係なく、シャットダウン時にハードウェアクロックに常に現地時間を書き込みます。この警告の外では、レジストリが正しく設定されていれば、Windowsはハードウェアタイムクロックを正しく処理します。これを試して:

  1. WindowsにUTCを使用させようとして時刻がめちゃくちゃになった場合は、Windowsを起動し、通常どおり時刻を設定します(正しいタイムゾーン、regeditなし、Windowsタイムサービスが有効、最近同期されたなど)。
  2. あなたがすでに述べたregeditをしてください
  3. 時間を同期するw32tm /config /update
  4. Windowsタイムサービスを無効にするsc config w32time start= disabled
  5. サードパーティをインストールするNTPクライアント
  6. 再起動しても機能することを確認する
15
JumperPunk

RealTimeIsUniversalレジストリキーはWindows 8および10でも機能します。この方法を使用する手順は、たとえば this answer のように、随所に説明されています。

ここで答えを複製します:

  1. Win+Sregedit、 Enter

  2. 次のキーに移動します:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

  3. 新しいDWORD(32ビット)値を作成し、RealTimeIsUniversalという名前を付けます。

  4. その値を1に設定します。

これが完了したら、マシンを再起動します。起動して再度実行したら、Windowsに時刻を自動的に設定させます(トレイの現在の時刻Date and Time Settings> Set Time Automaticallyをクリックします)。今回は混乱しません。

11

RealTimeIsUniversalは私のために働きます。これを機能させるには、レジストリエントリを適用した後、シャットダウン Windows(スリープまたは休止状態ではない)にします。 Windowsを起動する前にマシンを起動してBIOSに入り、BIOSで時刻を変更して保存し、Windowsの起動を続行します。または、Windowsをシャットダウンした後、Linuxを起動して、時刻同期を実行します。 Windowsから時刻が更新されると、Windowsは再起動後に何らかの理由でシステムの誤った時刻を更新します。

0
user416162

@jiehanzhengはい、WindowsでNTPを使用すると、クロックがめちゃくちゃになります。最善の回避策は、どのような種類の*でもNTP=を実行することです。 NIXはデュアルブートで、NTP)を無効にし、必要なタイムゾーンを使用してオフセットします。次に、Windowsのタイムゾーンシフトで夏時間を手動で調整する必要がありますが、ええと.

0
wajeemba