Zeit synchronisieren unter Windows 7 und Vista

Praxis & Tipps | Tipps & Tricks

In der Ausgabe 11/08 haben Sie beschrieben, wie man unter Windows XP mit einem kurzen Shell-Skript den Time-Service beim Systemstart so einstellt, dass er auch große Abweichungen korrigiert und hiesige Server befragt. Allerdings klappt das unter Windows 7 nicht. Was muss ich am Skript ändern?
Bei Windows 7 und Vista versteht der Parser die Angabe -1 für ein REG_DWORD nicht mehr. Setzen Sie stattdessen 0xffffffff ein:
net stop w32time
reg add HKLM\SYSTEM\CurrentControlSet\Services\
W32Time\Config /v
MaxPosPhaseCorrection /t REG_DWORD /d 0xffffffff /f
net start w32time
w32tm /config /update /manualpeerlist:
"ntp1.t-online.de,0x8ntp.web.de,0x8 ntp1.freenet.de,0x8"
/syncfromflags:MANUAL
w32tm /resync /nowait
Das Skript muss unter den modernen Windows-Varianten mit Administratorrechten laufen. Richten Sie es wie in der Hotline „NTP statt Knopfzelle“ in c’t 11/08 auf Seite 184 beschrieben unter „Geplante Task“ ein, damit es möglichst früh beim Systemstart zum Zuge kommt. Es funktioniert übrigens unverändert auch auf einem 64-Bit-System.
Zwar ist 0xffffffff laut Microsoft bei Windows 7 und Vista die Voreinstellung für die maximale Korrektur (MaxPos- beziehungsweise -NegPhaseCorrection), was den reg-add-Befehl eigentlich entbehrlich macht. Allerdings kann der Wert per Group Policy anders gesetzt werden. So fanden wir auf verschiedenen Windows-7-Rechnern 54 000 Sekunden, also 15 Stunden, vor. Für Domänen-Controller und Server, auf denen Anwendungen laufen, bei denen die korrekte Zeit wichtig ist, empfiehlt Microsoft, die maximale Korrektur auf 48 Stunden (172 800 Sekunden) zu setzen. Das soll die Gefahr falscher Zeitsprünge bei Übertragungsfehlern oder spinnenden Zeitservern reduzieren. (ea)