Windows 8.1: Wie kann man die "wahre" Betriebszeit feststellen?

666
seagull

Bitte aufmerksam lesen; Dies ist nicht die übliche Uptime-Frage.

Ich neige dazu , meinen Computer nicht per se herunterzufahren, sondern ihn in den Ruhezustand zu versetzen. Dies beschleunigt das Booten und ermöglicht mir die Verwendung von WOL. Die verschiedenen 'uptime'-Methoden (sysinfo, uptime.exe, Task-Manager usw.) zeigen die Zeit seit dem letzten vollständigen Startvorgang an, was bedeutet, dass die Zeit des Schlafens berücksichtigt wird. Ich suche nach einer echten Betriebszeit; Das heißt, nur die Zeit seit dem letzten Booten, an dem mein PC aufgewacht ist.

3
Schlaf / Wake / Shutdown-Ereignisse werden alle im Systemereignisprotokoll protokolliert. Sie können wahrscheinlich einige Berechnungen anhand der Zeiten dieser Ereignisse durchführen. Ich werde nicht versuchen, es zu versuchen und es für Sie zu schreiben. DavidPostill vor 9 Jahren 2

3 Antworten auf die Frage

1
LPChip

Es gibt keine Software, die dies tut. Die einzige Möglichkeit, dies zu tun, besteht darin, ein Skript zu schreiben, das einer Variablen im Wesentlichen jede Sekunde (oder Minute) ein +1 gibt und den Wert der Variablen lesen kann . Wenn sich Ihr PC im Ruhezustand / sleep / etc. Befindet, wird das Skript nicht ausgeführt, daher wird der Zähler nicht erhöht.

Es wird wahrscheinlich Auswirkungen auf das System haben, wenn ein solches Skript ständig im Hintergrund ausgeführt wird. Die Frage ist also, wie sehr Sie dies wünschen.

(Grund für die Auswirkungen auf das Skript) Je länger das Skript ausgeführt wird, desto höher wird die Anzahl und ein wirklich hoher Wert bedeutet, dass mehr Speicher zum Speichern erforderlich ist. (reden von Werten, die keine ganzen Zahlen sein können (65535), aber ich gehe davon aus, dass Ihr System für Tage / Wochen aktiv sein muss, wenn Sie so hoch gehen. Natürlich können Sie Ihr Skript schreiben, um Tage zu zählen und den Wert zurückzusetzen würde das beseitigen, aber wenn dann Ihr Skript mehr Code in seinem Zyklus durchläuft, der an sich auch Auswirkungen darauf haben wird, wenn auch wenig.

Solide Antwort, danke. Schade, dass dies nicht für nativ gedacht ist. seagull vor 9 Jahren 0
Wie viel Speicher erwarten Sie? 2 ² Sekunden beträgt 136 Jahre. 2 ² Minuten sind offensichtlich 60-mal so viel (über 8160 Jahre). Scott vor 9 Jahren 0
1
Steven

Windows generiert ein Systemereignis für das Aufwachen aus dem Ruhezustand (Ereignis-ID: 1, Quelle: Power-Troubleshooter). Dieses Ereignis enthält die Schlaf- und Weckzeiten.

Wake-Event

Quelle: Wake-Quelle - Ereignisanzeigeprotokoll lesen - Windows 7-Hilfeforen

Bestimmen Sie zur Ermittlung des Werts für die "wahre Betriebszeit" die letzte Startzeit (von den von Ihnen genannten Quellen), und ziehen Sie dann die Zeit für den Ruhezustand von nachfolgenden Wake-Ereignissen ab.

Hinweis: Sie können eine Anwendung zum Abfragen des Ereignisprotokolls mithilfe von .NET-Bibliotheken erstellen (außerhalb des Themas Superuser).

(1) Obwohl dieser Link die Frage beantworten kann, ist es besser, hier eine ausführlichere Beschreibung der Antwort hinzuzufügen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können nahezu unbrauchbar werden, wenn Ihr Link ausfällt. (2) Sie scheinen eine GUI-Schnittstelle für einen Haufen Rohdaten vorzuschlagen. Schlagen Sie vor, dass der Benutzer alle Schlaf- / Weckereignisse seit dem letzten Neustart manuell in einen Taschenrechner transkribiert und dann die Zahlen selbst zusammenstellt, um die Gesamtzeit zu ermitteln, nach der er sucht? Oder wissen Sie, wie ein Skript auf diese Daten zugreifen kann? Scott vor 9 Jahren 1
Siehe vereinfachte Antwort. Steven vor 9 Jahren 0
0
Scott

Wie flexibel sind Sie in Ihrer Definition von „True Uptime“? Eine Variante der Antwort von LPChip besteht darin, geplante Tasks zu schreiben, die durch Workstation Lock und Workstation Unlock ausgelöst werden, und dann die offensichtlichen Berechnungen durchzuführen .

Und falls die Mathematik nicht offensichtlich ist:

  1. Behalten Sie zwei Werte im Auge: "logische" Boottime und kumulative Betriebszeit. Es ist jeweils nur eine davon gültig. Sie benötigen also wahrscheinlich eine Flagge, um zu verfolgen, welche davon gültig ist, obwohl dies praktisch durch den Kontext bestimmt werden kann.
  2. Ich vermute, Sie möchten auch ein Ereignis, das beim Systemstart ausgeführt wird, oder einen anderen Mechanismus haben, um die "logische" Startzeit auf die eigentliche Startzeit zu initialisieren.
  3. Wenn die Workstation gesperrt ist, subtrahieren Sie die logische Boottime von der aktuellen Uhrzeit und speichern Sie diese als kumulative Betriebszeit.
  4. Wenn die Workstation nicht gesperrt ist, subtrahieren Sie die kumulierte Betriebszeit von der aktuellen Uhrzeit und speichern Sie diese als logische Zeit.
  5. Auf Anfrage subtrahieren Sie die logische Zeit von der aktuellen Uhrzeit und melden Sie diese als „wahre“ Betriebszeit. (Dies gibt Ihnen die Gesamtzeit an, für die der PC entsperrt wurde.)

So zum Beispiel

  1. Wenn Sie um 9 Uhr morgens einen Neustart durchführen, sparen Sie 9 Uhr als logische Startzeit.
  2. Wenn Sie das Gerät um 12 Uhr mittags sperren, werden 3 Stunden (Mittag - 9 Uhr) als kumulative Betriebszeit eingespart.
  3. Wenn Sie die Maschine um 13 Uhr entsperren, werden 10 Uhr (1 Uhr - 3 Stunden) als logische Zeit gespart.
  4. Wenn Sie um 18.00 Uhr nach Verfügbarkeit fragen, werden 8 Stunden
    (18.00 Uhr bis 10.00 Uhr = (Mittag - 9.00 Uhr) + (18.00 Uhr - 13.00 Uhr)) angezeigt.

Wenn Sie herausfinden können, wie Sie Aufgaben auslösen, um im Schlaf zu laufen und aufzuwachen, dann tun Sie das und Sie werden genau das bekommen, wonach Sie gefragt haben. (Wenn Sie den Computer jedoch in den Ruhezustand versetzen, wird die Lock-Aufgabe ausgelöst, und ich gehe davon aus, dass Ihr System so konfiguriert ist, dass es nach dem Aufwecken eine Entsperrung erfordert.)

Ich möchte formulieren, dass Sie tatsächlich die Betriebszeit für diese Ereignisse einmal berechnen müssen und nicht ein Skript starten, das im Hintergrund durch geplante Aufgaben ausgeführt wird. Andernfalls treten ernsthafte Leistungsprobleme auf. Ich habe ein Skript geschrieben, das einige einfache Berechnungen als geplante Aufgabe ausführen würde. Wenn dieses Skript ausgeführt wird, könnte ich kein Spiel spielen und es mit Fraps aufnehmen, da ich eine Verzögerung erfahren würde. Wenn ich diese geplante Aufgabe nicht ausgeführt hatte, war alles in Ordnung. Und seltsamerweise, wenn ich das Skript manuell lief, dann mein Spiel spielte und mit Fraps aufzeichnete, war es auch in Ordnung. LPChip vor 9 Jahren 0