J'ai une machine Windows qui change périodiquement l'heure du système, pour des raisons inconnues. Cela semble se produire toutes les heures.
Cette machine Windows est une machine virtuelle (Parallels Desktop 9, Win7 invité, OSX hôte). Elle possède un service NTP ( NetTime ) en cours d'exécution qui corrige rapidement l'erreur, mais dans ces quelques secondes entre le changement et la correction, elle pose des problèmes.
J'ai vérifié :
- La synchronisation temporelle de la VM est désactivée
- Windows "Internet Time" est désactivé
- Le service Windows Time est désactivé
- Je n'ai qu'un seul client NTP, qui met à jour toutes les 15 minutes.
Il y a une complication. Nous gérons un service d'astronomie de nuit. Afin d'éviter les problèmes liés aux changements automatiques d'heure, nous désactivons les changements automatiques d'heure et réglons manuellement le fuseau horaire de la machine plus tard dans la journée sur une zone avec le décalage correct. Par exemple, en Espagne, c'est l'heure d'été en ce moment. L'heure normale est UTC+1, le DST est UTC+2. Le matin après le changement d'heure, nous réglons le fuseau horaire de la machine sur la Grèce UTC+2. La machine hôte est configurée normalement (fuseau horaire correct, changement automatique de l'heure d'été). La complication est que l'horloge revient à l'heure actuelle à UTC+1 (heure pré-DST).
Un processus quelconque est en train de changer cela. Il est possible qu'il ait son propre réglage de fuseau horaire. Mais je n'ai pas été en mesure de le retrouver. Les changements sont enregistrés dans le journal du système. Il y a deux entrées clés : l'endroit où l'heure est mal réglée et le moment où elle est corrigée :
(Pour tout vous dire, le journal des événements est filtré par l'ID d'événement = 1, mais les autres événements semblent dénués de sens).
Il est intéressant de voir à quel point ces événements sont réguliers (toutes les heures, à la seconde près). Ce qui est encore plus intéressant, c'est que ce sont des heures de Temps de fonctionnement . Je peux surveiller le temps de fonctionnement du système dans le Gestionnaire des tâches, et lorsqu'il dépasse l'heure, l'horloge change.
Il est également intéressant de regarder les détails de l'événement :
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="Microsoft-Windows-Kernel-General" Guid="{GUID}" />
<EventID>1</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000010</Keywords>
<TimeCreated SystemTime="2018-04-18T00:31:28.500000000Z" />
<EventRecordID>500706</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="56" />
<Channel>System</Channel>
<Computer>T07-VM-GUEST</Computer>
<Security UserID="SID" />
</System>
- <EventData>
<Data Name="NewTime">2018-04-18T00:31:28.500000000Z</Data>
<Data Name="OldTime">2018-04-18T01:31:28.861800000Z</Data>
</EventData>
</Event>
Nous pouvons voir que cet événement change de 01:31 à 00:31 (heure UTC, 03:31 à 02:31 locale comme indiqué dans le journal des événements). Ce qui est particulièrement intéressant est cette ligne :
<Execution ProcessID="4" ThreadID="56" />
Le PID 4 est le System
processus :
En utilisant ProcessExplorer, je peux inspecter le processus System (PID 4) et je peux voir quelques détails sur ThreadId 56 (en supposant qu'ils ne sont pas recyclés et que je regarde le bon) :
Mais c'est du charabia pour moi. La seule chose significative que je vois ici est l'heure de début, et comment elle est liée aux heures de changement d'horloge (comme je l'ai dit plus haut, toutes les heures en synchronisation avec Uptime).
Cette réponse parle de trouver les changements d'heure dans le journal de sécurité, et tous les changements initiés par le service NetTime s'y trouvent. Mais les changements problématiques sont étrangement absents :
Mon analyse est-elle correcte et, dans ce cas, pourquoi le processus système modifie-t-il mon horloge système toutes les heures ?