Startzeit von Windows10 ermitteln?

worktime icon

An meinem Arbeitsplatz habe ich flexible Vertrauensarbeitszeit ohne Stechuhr – ich komme also vormittags ins Büro und schalte als erstes den PC ein. Der läuft den ganzen Tag und irgendwann ist auch Feierabend. In die Arbeit vertieft können sich so einige Überstunden ansammeln, die ich aber vermeiden soll.

Also habe ich mir ein kleines Tool programmiert, das mich nach Ablauf der Arbeitszeit erinnert, morgen weiter zu arbeiten. Mit Windows7 hat das immer ganz gut geklappt, jetzt habe ich einen neuen PC mit Windows10 bekommen, da hat das Tool mir eine falsche Zeit angezeigt…!?

Das kleine Programm funktioniert einfach so, daß es einen Windows-internen Zähler abfragt (GetTickCount) und daraus eine Zeitanzeige ausgibt. Ich benötige also den genauen Startzeitpunkt des PCs.

Mit Beginn neuerer Techniken, wenn der PC ruht, also dem „Ruhezustand“, „Energie sparen“ anstelle von „Herunterfahren“, ist der PC mit Windows10 sehr schnell wieder verfügbar, aber der Zähler, den ich mit GetTickCount abfrage, beginnt nicht mehr wie aus Windows7 gewohnt bei Null an hochzuzählen, sondern zählt nur dort weiter, wo es unterbrochen wurde.

Das „Herunterfahren“ bei Windows10 arbeitet inzwischen ähnlich dem Ruhezustand. Ein Kernbereich von Windows wird auf die Festplatte gespeichert, dann evtl. nur noch Änderungen zur letzten Speicherung und schon kann Windows sehr flott herunter- und auch wieder hochfahren, was in der Vergangenheit älterer Windowsversionen viele Minuten dauerte.

Während ältere Windowsnutzer sich noch daran schmerzlich erinnern, wie Windows immer wieder mal einfach abstürzte, kann Windows heute sehr lange stabil laufen – und zählt für sich selbst diese Laufzeit mit; der Speicherbereich für diesen Zähler fasst die Millisekunden bis zu 49,7 Tagen. Dann läuft er über und die Zeit zählt wieder von Null an. Daher gibt es einen weiteren Befehl, der auch mit längeren Laufzeiten umgehen kann (GetTickCount64).

Aber das hilft mir nicht dabei, den Startzeitpunkt vom Windows10 herauszufinden, weil dieser Zähler heute beim schnellen Hochfahren nicht mehr zurückgesetzt wird. Ich habe also eine Weile gegoogelt und in den Foren hat man verschiedene Ansätze, beispielsweise mit der Netzwerkanmeldung, oder Werte aus der Registry oder der Ereigniserfassung auszulesen, oder sich einen script in den Autostart zu legen, und solche Sachen…

Ich habe mir dann überlegt, daß Windows beim Starten ja so viel auf der Festplatte rumschreibt – ob da eine Datei ist, die nur beim Start geschrieben wird?

Und tatsächlich – es gibt die versteckte Systemdatei bootstats.dat – sie wird offenbar am Ende des Hochfahrens geschrieben und bleibt so bis zum nächsten Einschalten des PCs (sie wird also auch geändert, wenn man aus dem „Energie sparen“ kommt). Dabei wird wie bei allen Dateien, die sich ändern, das Datum und die Zeit der Dateiänderung gespeichert. Und nun kann ich einfach mit mit der Befehlszeile FileAge('c:\windows\bootstats.dat') abfragen, wann Windows gestartet wurde. Aus meiner Sicht ist das die einfachste Lösung.

Und hier geht es zu meinem kleinen Arbeitszeit-Tool.

You May Also Like