[C#] Modyfikacja serwera NTP w Windows


(Djluki) #1

Piszę aplikację, która będzie weryfikować obecność (a w zasadzie godzinę przybycia i odejścia) z danego miejsca.

Ponieważ będę operował godzinami z dokładnością do jednej minuty, to nie chcę żeby mi ktoś zarzucił że na jego zegarku jest inna godzina a mój program zapisał coś innego. Problem można łatwo rozwiązać synchronizując czas na komputerze z danym serwerem NTP. Wybrałem serwera Głównego Urzędu Miar (tempus1.gum.gov.pl). Wszystko super, ustawiłem go w systemie i wszystko działa.

Natomiast chciałbym zrobić w moim programie moduł który po pierwsze sprawdza czy w systemie automatyczna synchronizacja czasu jest włączona i ustawiona na mój serwer Głównego Urzędu Miar oraz dokonanie synchronizacji dwa razy czy tam raz na dzień. Znalazłem w internecie pomoce jak w C# napisać klienta NTP. Natomiast takie podejście jest trochę niewygodne, bo musiałbym przy każdym starcie uruchamiać tego klienta i synchronizować czas wewnątrz aplikacji. Wydaje mi się że łatwiej by było po prostu napisać kod który sprawdzi czy w systemie jest ustawiony mój serwer czasu i ew. dokona synchronizacji jeśli potrzeba.

Czy ktoś z Was wie jak z poziomu kodu C# wykonać to co normalnie robię myszką, czyli:

  • Zmień ustawienia daty i godziny -> Czas z internetu -> Zmień ustawienia -> i tutaj wpisuję wybrany przeze mnie serwer: tempus1.gum.gov.pl

  • Zmień ustawienia daty i godziny -> Czas z internetu -> Zmień ustawienia -> Aktualizuj teraz

?


(Grzelix) #2
  1. serwer: wpisujesz wartość do rejestru (na 99% )to jest to miejsce:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers]

  1. aktualizuj teraz: http://technet.microsoft.com/en-us/libr ... 73263.aspx

wywołanie procesu:

w32tm /resync /nowait