Windows Systemzeit

Antworten
bademeister
Beiträge: 141
Registriert: 28 Feb 2014, 10:21

Windows Systemzeit

Beitrag von bademeister »

Trotz der Lösung des einen Problems habe ich etwas, was mich schon länger beschäftigt und mir bereits bei zwei unabhängigen opsi-Umgebungen aufgefallen ist.

Bei Windows 7 ist der Dienst w32tm (bzw. W32Time / Windows-Zeitgeber), welcher sich um die Synchronisierung der Systemzeit mit dem Standardserver: time.windows.com kümmert nicht gestartet. Bei einer klassischen "per-Hand"-Installation ist dieser Dienst jedoch gestartet und die Zeit wird korrekt aktualisiert. In beiden Fällen steht der Dienst als Starttyp: Manuell drin. Ich weiß also nicht wodurch der bei einer klassischen Installation gestartet wird (vermutlich bein Login).

Ist es möglich dies in der Installation von Windows direkt einzuschalten? Dafür extra ein Produkt zu erstellen ist zwar möglich, aber lästig, da die Liste schon lang genug ist und die Zeit schließlich IMMER synchronisiert werden soll.

Vielen Dank im Voraus.
mensch90
Beiträge: 130
Registriert: 27 Jul 2013, 16:52

Re: Windows Systemzeit

Beitrag von mensch90 »

Dein Verhalten ist mir noch nicht aufgefallen, allerdings passen wir mit einem Paket nach der Installation sowieso die komplette Installation durch Scripte und Regedit-Importe an.
Wir hatten z.B. unter Windows XP immer das Problem, dass Windows nach jedem Start 5 Minuten brauchte, um die Uhrzeit überhaupt korrekt zu synchronisieren.
Bei uns ist/war dies sehr kritisch, da unsere interne Verwaltungssoftware die Zeitstempel zwischen Client und Datenbankserver stets prüft.

Ich habe mir in zwei Schritten beholfen:

1) Registryimport der NTP-Settings (wir nutzen einen internen NTP Server, da wir so unnötigen WAN-Traffic vermeiden und auch keine "DDOS"-ähnlichen Attacken gegen NTP Server fahren wollen....

Code: Alles auswählen

; NTP Server auf ntp.XXX.org umstellen und Syncgeschwindigkeit erhöhen
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time]
"Start"=dword:00000003
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config]
"MaxNegPhaseCorrection"=dword:FFFFFFFF
"MaxPosPhaseCorrection"=dword:FFFFFFFF
"AnnounceFlags"=dword:00000005
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters]
"NtpServer"="ntp.XXX.org,0x1"
"Type"="NTP"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient]
"Enabled"=dword:00000001
"SpecialPollInterval"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers]
@="1"
"1"="ntp.XXX.org"
"2"="ntp.XXX.de"
2) Zudem installiere ich einen Windows-Task, der bei Start, Login und Entsperrung der Arbeitsstation einen Sync auslöst (wir benötigen unbedingt genaue Timestamps zwecks Datenbankkonsistenzen!)

[DOSInAnIcon_set_ntptask]
schtasks /Delete /TN "Zeitabgleich" /F
schtasks /Create /XML %ScriptPath%\resources\zeitabgleich.xml /TN Zeitabgleich

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Source>Windows-Zeitgeber</Source>
    <Author>mensch90</Author>
    <Description>Regelmäßige Synchronisation der Uhrzeit mit ntp.XXX.de nach einem Start, Sperrung des Bildschirmes sowie Neuanmeldung.</Description>
    <URI>Microsoft\Windows\Time Synchronization\SynchronizeTime</URI>
  </RegistrationInfo>
  <Triggers>
    <BootTrigger>
      <Enabled>true</Enabled>
    </BootTrigger>
    <LogonTrigger>
      <Enabled>true</Enabled>
    </LogonTrigger>
    <SessionStateChangeTrigger>
      <Enabled>true</Enabled>
      <StateChange>SessionUnlock</StateChange>
    </SessionStateChangeTrigger>
  </Triggers>
  <Principals>
    <Principal id="LocalService">
      <UserId>S-1-5-19</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
    <RestartOnFailure>
      <Interval>PT1M</Interval>
      <Count>3</Count>
    </RestartOnFailure>
  </Settings>
  <Actions Context="LocalService">
    <Exec>
      <Command>%windir%\system32\sc.exe</Command>
      <Arguments>start w32time task_started</Arguments>
    </Exec>
    <Exec>
      <Command>%windir%\system32\w32tm.exe</Command>
      <Arguments>/resync /nowait</Arguments>
    </Exec>
  </Actions>
</Task>
Hoffe, diese Lösung hilft auch anderen in ähnlichen Szenarien...
Zuletzt geändert von mensch90 am 09 Apr 2017, 20:05, insgesamt 1-mal geändert.
bademeister
Beiträge: 141
Registriert: 28 Feb 2014, 10:21

Re: Windows Systemzeit

Beitrag von bademeister »

Sehr starke Lösung auf jeden Fall. Vielen Dank schon mal.

So streng sind unsere Anforderungen jedoch gar nicht. Ich würde mir einfach nur eine "einigermaßen" korrekte Uhrzeit wünschen. Aktuell startet die Zeit nach der Windows 7 Installation bei 0:00 Uhr. Da leider nur Administratoren die Uhrzeiteinstellungen ändern dürfen, würde ich das gerne über opsi lösen - jedoch am liebsten ohne ein eigenes Paket dafür zu erstellen.

Bei einer händischen Win7-Installation geht es ja auch. - Vielleicht meldet sich noch jemand.
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

Re: Windows Systemzeit

Beitrag von hawaii »

Interessante Lösung mensch90.
Bademeister, wenn man unter dem netbootproduct in dem Fall win7 einfach folgende Dateien anlegt:

./opsi/default.reg

Code: Alles auswählen

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time]
"Start"=dword:00000003
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config]
"MaxNegPhaseCorrection"=dword:FFFFFFFF
"MaxPosPhaseCorrection"=dword:FFFFFFFF
"AnnounceFlags"=dword:00000005
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters]
"NtpServer"="ntp.XXX.org,0x1"
"Type"="NTP"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient]
"Enabled"=dword:00000001
"SpecialPollInterval"=dword:00015180 
"SpecialInterval"=dword:00000001 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers]
@="1"
"1"="ntp.XXX.org"
"2"="ntp.XXX.de"
Die ntp Server natürlich noch anpassen ;-)

./opsi/postinst.d/21_reg.cmd

Code: Alles auswählen

echo [%date% %time%] Executing: regedit /s "%script_drive%\opsi\default.reg"
regedit /s "%script_drive%\opsi\default.reg"
Danach ein

Code: Alles auswählen

opsi-setup --set-rights /opt/pcbin/install/YOURNETBOOTPRODUCT
nicht vergessen.

Dann sollte das Ganze während der Installation gesetzt werden und es sollte kein Paket notwendig sein.
Ich benutze diese Methode schon für den automatische Domainjoin und die Aktivierung von Updates.
wiki/userspace:windows7#domainjoin_with_a_samba_pdc

Edit: Ich hab es noch mal angepasst, so dass der Abgleich nur einmal täglich passiert.
mensch90
Beiträge: 130
Registriert: 27 Jul 2013, 16:52

Re: Windows Systemzeit

Beitrag von mensch90 »

Ich gebe zu, eine sehr stringente Lösung von mir gepostet zu haben - unsere Anwendungsentwickler waren einfach fassungslos, dass es nach einem Windows Start auf div. Hardwaretypen zu teils 20 Sekunden Abweichungen kam, die erst nach 5 Minuten korrigiert waren. Ein Login in unsere Verwaltungssoftware wurde/wird ab einer gewissen Abweichung schlicht gesperrt - SupportCall des Mitarbeiters erfolgt ;)

Meine Registryanpassungen hat Hawaii ja schon leicht modifiziert gepostet - der Windows-Task sollte einfach den "natürlichen Lauf der Dinge" mit der Brechstange beschleunigen.

Zudem haben wir auch die GUI-Eintragungen der Zeiteinstellungen mit unseren NTP-Servern überschrieben, damit optisch alles korrekt arbeitet. Zudem entfernen wir auch die Rechte für Administratoren, die Uhrzeit und Zeitzone zu ändern (wer Interesse an der Realisierung hat, gerne melden). Es gab unter XP nämlich Spezialisten, die Adminrechte zwecks alter Software benötigten und zudem beim "Nachschauen eines Termines in der Zukunft" gerne mal das Datum verstellt haben. Zusammen mit dem trägen Abgleich ein Horrorszenario für alle korrekten Rechnungsbuchungen etc ;) :evil:
thorben
Beiträge: 10
Registriert: 17 Apr 2014, 10:30

Re: Windows Systemzeit

Beitrag von thorben »

Hi,
wenn ich z. B. die "default.reg" und dazugehörig die "21_default.cmd" angelegt und die Rechte entsprechend gesetzt habe, muss ich dann noch irgendwo sagen, dass er diese auch ausführt?
Ich seh im Log, dass die Dateien kopiert werden. Es gibt jedoch keinen "Executing"-Eintrag dafür und wurde auch nicht ausgeführt.

Vielen Dank schonmal!

Gruß,
Thorben
mensch90
Beiträge: 130
Registriert: 27 Jul 2013, 16:52

Re: Windows Systemzeit

Beitrag von mensch90 »

Warum baust du dies unbedingt mit ins das netboot-image ein?
Wir fahren hier sehr gut mit einem opsi-localboot-paket welches alle clientanpassungen (und das sind bei win7 einige..) macht.
Dort importiere ich registry-keys via WinBatch und regedit.exe /S meineregdatei.reg
thorben
Beiträge: 10
Registriert: 17 Apr 2014, 10:30

Re: Windows Systemzeit

Beitrag von thorben »

Stimmt eigentlich auch.
Ich bin noch sehr neu hier, dann werde ich auch mal ein Paket bauen, was ein paar Einstellungen vornimmt.

Danke für den Tipp!
Antworten