Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

De_Struktor

unregistriert

1

22.03.2014, 14:40

Automatische Zeitsynchronisation mit NTP Server

Hey ho liebe Community,

ich habe eine Offtopic Frage und ich wäre euch wirklich dankbar wenn ihr mir helfen könntet, das zu lösen.

Meine BIOS Uhr ist kaputt und bei jedem Start meines Rechners wird das datum: 25.08 2008 01:00 angezeigt und das muss ich immer manuell dann mit einem NTP Server synchronisieren.

Ich hatte mir gedacht ein Batchskript zu schreiben, welches ich in autostart packe und das bei jedem Neustart diese manuelle Zeiteinstellung automatisch für mich übernimmt.

Nur leider habe ich nicht die geringste Ahnung von Batchskripting und wollte euch fragen, ob ihr mir helfen könnte, wie ich bei jedem (Neu)Start die Zeit automatisch synchronisiert bekomme.

Das ist mein aktuelles Skript:


cd \
w32tm /resync
pause

Mfg

DeStruktor

FSA

Community-Fossil

  • Private Nachricht senden

2

22.03.2014, 15:01

Da wird die Batterie kaputt sein. Tausch mal die Batterie auf dem Mainboard.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

22.03.2014, 15:02

Bist du dir sicher, dass die Uhr kaputt und nicht nur die Knopfzelle leer ist?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

De_Struktor

unregistriert

4

22.03.2014, 16:02

Sicher bin ich mir nicht, aber das spielt eh keine rolle und selbst wenn werde ich sie nicht auswechseln. Meine Frage ist dennoch nicht beantworet, ist es denn per skript möglich ja oder nein?

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

5

22.03.2014, 21:55

Ich kenne Windows nicht genug um meine Behauptungen zu belegen.
Jedoch gibt es ein paar Dinge die eine eventuelle Synchronisation fehlschlagen lassen könnten. Da wäre zum einen das sanity limit. Dass bei dir deutlich überschritten wird (meist 1000 Sekunden). Hinzu kommt, dass es durchaus eine ganze Zeit dauern kann ehe die Zeit synchronisiert wird (Ermittlung der drift usw.).

Sprich du solltest schauen, sofern keine Synchronisation stattfindet, wie du angeben kannst dass Windows das sanity limit ignoriert. Und du musst durchaus eine Zeit lang warten bis die Zeit synchron ist.

Hinzu kommt, ist die Uhr wirklich defekt kann es sein, dass eine Ermittlung der drift nicht möglich ist.

Mehr kannst du hier lesen: ntp

Oder meinst du einfach nur so etwas How to run a batch file each time the computer boots? Wenn ja, solltest du dir google und co. noch einmal erklären lassen.
:love: := Go;

De_Struktor

unregistriert

6

24.03.2014, 16:05

Könnte ich das nicht mittels Programmierung auch lösen.

Ich habe mich für C# entschieden um das Time Problem zu lösen.

Nur der Code hier funktioniert nicht, besser gesagt, die SetSystemTime(*Struct) liefert immer false.


Was mache ich falsch ??

Bitte schaut euch meinen Code an und sagt mir was ich falsch mache :( bin am verzweifeln!

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Program
    {
        [System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError = true)]
        public static unsafe extern bool SetSystemTime(SYSTEMTIME* networkTime);
        
        static unsafe void Main(string[] args)
        {
           
            DateTime sysTime = NtpClient.GetNetworkTime("time.nist.gov");
            SYSTEMTIME newSystime = new SYSTEMTIME();

            newSystime.wYear = (ushort)sysTime.Year;
            newSystime.wMonth = (ushort)sysTime.Month;
            newSystime.wDayOfWeek = (ushort)sysTime.DayOfWeek;
            newSystime.wDay = (ushort)sysTime.Day;
            newSystime.wHour = (ushort)sysTime.Hour;
            newSystime.wMinute = (ushort)sysTime.Minute;
            newSystime.wSecond = (ushort)sysTime.Second;
            SYSTEMTIME* pointer = &newSystime;
            Console.WriteLine(SetSystemTime(pointer));
            Console.ReadLine();
        }
    }


Mfg

DeStruktor

P.s ( Die ntpclient methode habe ich aus einer Lib die ich mir runtergezogen habe. Und die hat tatsächlich auch die genaue Uhrzeit!

7

24.03.2014, 21:27

If the function fails, the return value is zero [Anm.: == false]. To get extended error information, call GetLastError.

Und nach kurzem suchen findet man: Win32Exception:
Win32Exception() Initializes a new instance of the Win32Exception class with the last Win32 error that occurred.

Was brauchst du noch?
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

De_Struktor

unregistriert

8

24.03.2014, 22:01

Ok, es steht: Dem Client fehlt ein erforderliches Recht, wie kann ich ihm das geben bzw welches recht?=

9

24.03.2014, 22:14

In der Doku (ja, man kann die MSDN wirklich öffnen, das ist kein Mythos!) gibt es einen Abschnitt Remarks. Den solltest du lesen...


Und dann startest du dein Programm am besten mal als Admin.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Werbeanzeige