タスクマネージャーとWMIによって報告される誤った稼働時間。 手動で更新する

タスクマネージャーの[パフォーマンス]タブ(CPUセクション)にはシステムの稼働時間情報が表示されますが、起動時間と報告された稼働時間データが一致しないのはなぜですか。

これは、アップタイムを計算するときに、タスクマネージャーまたはWMIがスリープ/休止状態の期間を差し引かないためです。 また、高速起動が導入され、Windows 8およびWindows 10でデフォルトで有効になっているため、報告される稼働時間は実際の最後の起動時間と相関しない場合があります。

原因

高速スタートアップは、コールドスタートアップ+ハイバネートのハイブリッドです。 高速起動を有効にしてコンピューターをシャットダウンすると、ユーザーアカウントは完全にログオフされます。 次に、システムは(従来のコールドシャットダウンの代わりに)休止状態モードになり、ログイン画面までの次回の起動が速くなります(30〜70%高速)。

システム稼働時間を見つけるためのさまざまな方法

コンピューターの稼働時間を見つけるために使用できる方法がいくつかあり、すべてWMIを使用しています。

パワーシェル

 [DateTime] :: Now – [Management.ManagementDateTimeConverter] :: ToDateTime((Get-WmiObject Win32_OperatingSystem).LastBootUpTime)) 

これが稼働時間の情報です。

システム情報

コマンドプロンプトウィンドウから、次のコマンドを実行します。

 systeminfo | / i "Boot Time"を見つけます 

ネット統計

コマンドプロンプトウィンドウから、次のコマンドを実行します。

 ネット統計ワークステーション 

WMIC(WMIのコマンドラインインターフェイス)

 wmic osはlastbootuptimeを取得します 

それはWMI時間です。 ただし、上記の1および2とまったく同じ意味です。

Microsoft Uptime.exeユーティリティ

稼働時間は同じでした。

タスクマネージャー

タスクマネージャーとWMIが誤った稼働時間を表示する

上記のすべての方法で同じアップタイムが示されましたが、各アイテムのスクリーンショットを撮るのに時間がかかるため、数秒/分しか変化していません。

しかし、実際には、すべての方法を使用してアップタイムが示され、休止時間も含まれます。 実際の稼働時間は5時間で、55分( 08:24 PM )です。この記事を書いています。 また、イベントビューアでシャットダウンイベントとログインイベントを確認することで、そのことを確認できます。

稼働時間の更新

次のコマンドを実行すると、システムが完全にシャットダウン(コールドシャットダウン)されます。 ただし、高速起動の利点は次の起動では利用できません。

 シャットダウン/ s / t 0 

(または)

(シャットダウン)の代わりに(スタート)、(電源)、( 再起動 )の順にクリックします

高速起動を無効にする

高速起動を無効にする場合は、電源オプションを使用して無効にすることができます。

  • コントロールパネル、電源オプションを開きます。
  • [電源ボタンの機能を選択]をクリックします
  • 現在使用できない設定の変更をクリックします
  • [ 高速起動をオンにする(推奨) ]チェックボックスをオフにし、[OK]をクリックします。

高速起動を無効にせずに稼働時間を更新する

  1. Services.mscを起動し、Windows Management Instrumentationサービスを停止します。
  2. 依存するサービスを停止するように求められます。 はいをクリックします。
  3. フォルダC:\Windows\System32\Wbem\Repository

    $config[ads_text6] not found

  4. そこですべてのファイルを削除します。
  5. Windowsを再起動します。 タスクマネージャーを含む上記の方法のいずれかを使用して、実際の最後の起動時間を示すUp timeを記録します。

しかし問題は、シャットダウンのたびにWMIリポジトリをクリアする必要があることです。そうしないと、稼働時間が集計された数値を示し続けることになります。

バッチファイルを作成し、シャットダウンスクリプトとして実行する(Windows Pro Editions以降)

次の内容のバッチファイルを作成できます。

 net stop iphlpsvc >d:\wmireset.txt net stop ncasvc >>d:\wmireset.txt net stop sharedaccess >>d:\wmireset.txt net stop wscsvc >>d:\wmireset.txt net stop winmgmt >>d:\wmireset.txt sc query winmgmt >>d:\wmireset.txt rd /s /q "C:\Windows\System32\wbem\repository" >>d:\wmireset.txt md "C:\Windows\System32\wbem\repository" date /t >>d:\wmireset.txt time /t >>d:\wmireset.txt 

これにより、バッチファイルの出力がタイムスタンプと共にwmireset.txtという名前のテキストファイルに書き込まれ、バッチファイルが最後に実行されたのはいつかがわかります。

次に、ローカルグループポリシーエディター(gpedit.msc)を開き、次の場所に移動します。

コンピューターの構成>スクリプト(スタートアップ/シャットダウン)

そこでバッチファイルを追加し、[OK]をクリックします。 Windowsを再起動し、稼働時間を確認します。 また、その後の再起動でアップタイムが更新されるかどうかをテストします。 WMIリポジトリをクリアする前と後の高速な起動時間のベンチマークは行っていませんが、Windowsは毎回リポジトリを再構築する必要があるため、起動時間が遅くなる可能性があります。

関連記事