Hallo ich habe ein Problem welches mir ein wenig Kopfzerbrechen bereitet!
Und zwar brauche ich für mein Programm eine synchrone (heißt in dem Fall gegen eine Stratum1 Ntp-Server gesyncte) Zeit.
Wäre ja alles kein Problem nur leider soll dies keine ständige Internetverbindung voraussetzen, sondern nur beim Starten des Programms. -> Ist nunmal so gegeben, also indiskutabel 😃
Das nächste Problem sind Änderungen an der Systemzeit durch den Benutzer (oder wen auch immer), die natürlich auch erfasst werden müssen!
Meine Überlegung bisher:
Was ich jetzt als Problem sehe ist, wenn nach dem Abfangen der "WM_TIMECHANGE" Message der Thread nicht schnell genug blockiert wird (Und das ist meiner Meinung nach nicht genau zu bestimmen) ich in meinem Thread gegen die verstellte Zeit synce und den Unterschied der Änderung nicht berücksichtige!
Ich weiß das ich hier nur Theorien verwende aber könnt ihr mir trotzdem ein wenig auf die Sprünge helfen?
Hallo Nightmare,
kannst du nicht einfach mit Gruppenrichtlinien jedem das Ändern der Systemzeit untersagen (außer deinem Programm und dem Admin natürlich 😉 )?
Schön wärs 8)
EDIT:
Hinzuzufügen ist noch, das das Programm auf Clients verwendet wird, die uneigeschränkten Zugriff auf das System haben! Das heißt die Systemzeit kann durch den User manipuliert werden.
Mein Programm soll auch nicht die Systemzeit ändern, sondern diese nur auslesen!
Hi Nightmare,
wär es vielleicht eine Möglichkeit, eine eigene Uhrzeitklasse zu schreiben, die bei Programmstart die NTP-Zeit bekommt und eine Stopwatch startet.
Aus der Startzeit und der Stopwatch.Elapsed errechtnet eine Funktion dann die 'richtige' Zeit ohne auf die Systemzeit angewiesen zu sein.
Gruß
Gwinn
Hallo!
Sieh dir mal das an: C# - Simple Network Time (NTP) Protocol Client
Nobody is perfect. I'm sad, i'm not nobody 🙁
Hallo Nightmare,
meines Wissens ist GetTickCount nicht von der Umstellung der Sytemzeit betroffen. Wenn du die reale Zeit also einmal ermittelt hast, kannst du auf diese die Differenz vom aktuellen GetTickCount und dem GetTickCount zum Zeitpunkt der Ermittlung der realen Zeit addieren, um die tatsächliche aktuelle Zeit zu bekommen.
herbivore
@herbivore
Deine Methode, bzw. deine Anregung erscheint mir als einzige Möglichkeit den Sync sauber durchzuführen!
Die Anforderungen an den Sync wurden aber mittlerweile geändert, heißt ich muss nicht mehr so extrem auf die Zeitänderungen durch den User achten!
Vielleicht setzte ich das ganze aber trotzdem mal irgendwann um und versuche einen sauberen Artikel darüber zu verfassen.
Vielen Dank für eure Hilfe und die Anregungen!
Und nochmal eine Entschuldigung für die anfängliche Verwirrung in meiner Problembeschreibung!