注意深く読んでください;これは通常の稼働時間の質問ではありません。
私はそうしない傾向がありますシャットダウンコンピュータ自体ではなく、代わりにスリープ状態にします。起動時間が短縮され、WOLを使用できるようになります。さまざまな「uptime」メソッド(sysinfo、uptime.exe、タスクマネージャーなど)は、最後のフルブートからの時間を表示します。つまり、スリープに費やされた時間が考慮されます。私が探しているのはtrue uptime ;つまり、最後に起動してからPCが起動してからの時間だけです。
これを行うソフトウェアはないので、これを行うことができる唯一の方法は、基本的に変数に毎秒(または分)+1を与え、変数の値を読み取る方法を持つスクリプトを作成することです。 。 PCが休止状態/スリープなどの場合、スクリプトは実行されていないため、カウンターは増加しません。
そのようなスクリプトが常にバックグラウンドで実行されている場合、システムに影響を与える可能性が高いので、問題は、これがどれほどひどく必要かということです。
(スクリプトへの影響の理由)スクリプトの実行時間が長くなるほど、数値は大きくなり、値が非常に大きい場合は、格納するためにより多くのメモリが必要であることを意味します。 (整数(65535)にすることはできない値について話しますが、これを高くすると、システムは数日/数週間稼働している必要があると思います。もちろん、日数をカウントして値をリセットするスクリプトを作成することもできます。それを排除しますが、その場合、スクリプトはそのサイクルでより多くのコードを通過し、それ自体も少しでも影響を及ぼします。
Windowsは、スリープから復帰するためのシステムイベントを生成します(イベントID:1、ソース:Power-Troubleshooter)。このイベントには、スリープ時間とウェイク時間が含まれます。
ソース: ウェイクソース-イベントビューアログの読み取り-Windows 7ヘルプフォーラム
「真の稼働時間」の値を決定するには、(言及したソースから)最後の起動時間を決定し、その後のウェイクイベントからスリープに費やした時間を差し引きます。
注:.NETライブラリ(スーパーユーザーではトピック外)を使用して、イベントログをクエリするアプリケーションを作成できます。
「真の稼働時間」の定義はどの程度柔軟ですか。 LPChipの回答 のバリエーションは、ワークステーションのロックとワークステーションのロック解除によってトリガーされるスケジュールされたタスクを記述してから、明らかな計算を行うことです。
そして、数学が明白でない場合:
だから、例えば、
スリープとウェイクアップで実行するタスクをトリガーする方法を理解できる場合は、それを実行すると、要求したとおりの結果が得られます。 (ただし、マシンをスリープ状態にすると、ロックタスクがトリガーされます。システムは、ウェイク後にロック解除を要求するように構成されていると思います。)