web-dev-qa-db-fra.com

Forcer Windows 8 à utiliser l'UTC pour gérer l'horloge du BIOS

J'ai Arch Linux + Windows 8 sur mon ordinateur portable. Dans les versions précédentes de Windows, il existait dans le registre (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal) un DWORD qui permutait entre l'heure locale et l'heure UTC, mais cela ne semble plus fonctionner sous Windows 8.

Je reçois maintenant l'heure UTC sous Windows, car il pense que le BIOS lui donne l'heure locale, qui est en fait l'heure UTC. Après le redémarrage sous Arch Linux, l'horloge devient localtime-0400, car Arch pense que le temps correct est défini par le BIOS.

Je ne veux pas laisser Arch Linux utiliser l'heure locale. Sous cette condition préalable, existe-t-il une solution possible?

18
jiehanzheng

RealTimeIsUniversal est vraiment bogué et pas une solution officiellement recommandée (c’est peut-être pourquoi ils l’ont désactivé sous Win8?). Voir L’horloge temps réel IBM PC doit s’exécuter en mode UT et une réponse de Raymond Chen: Pourquoi Windows maintient-il l'horloge de votre BIOS à l'heure locale? . À ce jour, je ne pense pas qu'il existe une solution appropriée pour cela.

3
Karan

Le service Windows Time par défaut écrit toujours l'heure locale sur l'horloge matérielle lors de l'arrêt, indépendamment de ce que dit le registre à propos de l'heure UTC. En dehors de cette mise en garde, Windows traitera correctement l'horloge matérielle si le registre est défini correctement. Essaye ça:

  1. Si le temps est mal réglé d'essayer de faire en sorte que Windows utilise l'UTC, démarrez Windows et réglez l'heure comme d'habitude (fuseau horaire correct, pas de regedit, service Temps Windows activé, récemment synchronisé, etc.)
  2. Faites le regedit que vous avez déjà mentionné
  3. Synchroniser l'heure w32tm /config /update
  4. Désactiver le service de temps Windows sc config w32time start= disabled
  5. Installer un client NTP tiers
  6. Vérifiez que cela fonctionne avec un redémarrage
15
JumperPunk

La clé de registre RealTimeIsUniversal fonctionne toujours sous Windows 8 et 10! Juste testé par moi-même. Les instructions pour utiliser cette méthode sont expliquées de nombreuses fois, par exemple dans cette réponse .

Je vais reproduire la réponse ici:

  1. Win+SregeditEnter.

  2. Accédez à la clé: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation.

  3. Créez une nouvelle valeur DWORD (32 bits), nommez-la RealTimeIsUniversal.

  4. Définissez sa valeur sur 1.

Une fois cela fait, redémarrez simplement votre ordinateur. Une fois qu’il est à nouveau opérationnel, laissez Windows régler automatiquement l’heure (cliquez sur l’heure actuelle dans la barre des tâches, Date and Time Settings> Set Time Automatically).

10
TranslucentCloud

RealTimeIsUniversal fonctionne pour moi. Pour que cela fonctionne, après avoir appliqué l'entrée du registre, fermez Windows (veille ou veille prolongée). Démarrer la machine et entrer dans le BIOS avant de démarrer sous Windows, modifier l'heure dans le BIOS, enregistrer, puis continuer à démarrer sous Windows. Après avoir fermé Windows, démarrez Linux et laissez la synchronisation temporelle faire son travail. Si l'heure est mise à jour à partir de Windows, Windows mettra à jour une heure incorrecte sur le système après un redémarrage.

0
user416162

@jiehanzheng oui, si vous utilisez NTP sous Windows, cela gâchera l'horloge. La meilleure solution consiste à exécuter NTP dans la version de * NIX que vous êtes en double amorçage, à désactiver NTP dans Windows et à le compenser en utilisant le fuseau horaire souhaité. Ensuite, il vous suffit de régler manuellement l'heure d'été avec un décalage de fuseau horaire dans Windows, mais hein ..

0
wajeemba