myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » Synchrone Zeit ohne ständige Internetverbindung sicherstellen und vor Manipulationen schützen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Synchrone Zeit ohne ständige Internetverbindung sicherstellen und vor Manipulationen schützen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Nightmare
myCSharp.de-Mitglied

Dabei seit: 19.03.2008
Beiträge: 20


Nightmare ist offline

Synchrone Zeit ohne ständige Internetverbindung sicherstellen und vor Manipulationen schützen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:

- Beim Starten des Programms gegen NTP Server syncen und Drift speichern
- Ein Thread läuft jede Minute, speichert die aktuelle Systemzeit und Startet eine Stopwatch
- Bei einer Änderung der Systemzeit (gecatchte Windows Message) wird dieser Thread gelockt und die letzte abgefangene Systemzeit gegen die Laufzeit der Stopwatch gesynct -> Damit wären wir eigentlich wieder total synchron
- Zum ermitteln der Zeit wird die gecatchte Systemzeit abzüglich des Drifts ausgegeben

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?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightmare am 29.09.2011 17:16.

28.09.2011 14:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
winSharp93 winSharp93 ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2918.png


Dabei seit: 19.01.2007
Beiträge: 5.742
Herkunft: Stuttgart


winSharp93 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Nightmare,

kannst du nicht einfach mit Gruppenrichtlinien jedem das Ändern der Systemzeit untersagen (außer deinem Programm und dem Admin natürlich Augenzwinkern )?
28.09.2011 14:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Nightmare
myCSharp.de-Mitglied

Dabei seit: 19.03.2008
Beiträge: 20

Themenstarter Thema begonnen von Nightmare

Nightmare ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Schön wärs cool

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!
28.09.2011 14:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Gwinn
myCSharp.de-Mitglied

Dabei seit: 11.03.2011
Beiträge: 47


Gwinn ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
29.09.2011 09:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tom-essen tom-essen ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2140.png


Dabei seit: 15.05.2005
Beiträge: 1.815
Entwicklungsumgebung: VS.NET 2013
Herkunft: NRW


tom-essen ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

29.09.2011 09:28 Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.480
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
29.09.2011 17:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Nightmare
myCSharp.de-Mitglied

Dabei seit: 19.03.2008
Beiträge: 20

Themenstarter Thema begonnen von Nightmare

Nightmare ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@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!
30.09.2011 10:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 9 Jahre.
Der letzte Beitrag ist älter als 9 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 30.11.2020 11:53