Windows 8.1:如何確定「真實」正常運作時間?

Windows 8.1:如何確定「真實」正常運作時間?

請仔細閱讀;這不是常見的正常運作時間問題。

我傾向於不關閉我的電腦本身,而是將其置於睡眠狀態。它使啟動時間更快,並允許我使用 WOL。各種「正常運行時間」方法(sysinfo、uptime.exe、任務管理器等)將顯示自上次完全啟動以來的時間,這意味著睡眠時間也被考慮在內。真的正常運轉時間;也就是說,僅是自上次啟動以來我的電腦處於喚醒狀態的時間。

答案1

沒有軟體可以做到這一點,因此您能夠做到這一點的唯一方法是編寫一個腳本,該腳本基本上每秒(或每分鐘)給變數 +1,並有辦法讀取變數的值。如果您的電腦處於休眠/睡眠等狀態,則腳本不會執行,因此計數器不會增加。

如果這樣的腳本不斷在後台運行,很可能會對系統產生影響,所以問題是,你有多想要這個?

(影響腳本的原因)腳本運行的時間越長,數字就越高,而且值非常高意味著需要更多的記憶體來儲存。 (談論不能是整數的值(65535),但我想如果你設定這麼高,你的系統必須啟動並運行幾天/幾週。當然,你可以編寫腳本來計算天數並重置該值會消除這種情況,但是如果您的腳本在其周期中經歷更多程式碼,這本身也會對其產生影響,即使影響很小。

答案2

Windows 產生從睡眠狀態喚醒的系統事件(事件 ID:1,來源:Power-Troubleshooter)。此事件包含睡眠和喚醒時間。

喚醒事件

來源:喚醒來源 - 讀取事件檢視器日誌 - Windows 7 幫助論壇

若要確定您的「真實正常運作時間」值,請確定上次啟動時間(來自您提到的來源),然後從任何後續喚醒事件中減去睡眠時間。

注意:您可以建立一個應用程式來使用 .NET 程式庫查詢事件日誌(超級使用者的題外話)。

答案3

您對「真正的正常運作時間」的定義有多靈活?一個變體LP晶片的回答 是編寫由工作站鎖定和工作站解鎖觸發的計劃任務,然後進行明顯的數學運算。

並且,如果數學不明顯:

  1. 追蹤兩個值:「邏輯」啟動時間和累積正常運作時間。一次只有其中一項有效。因此,可以說,您還需要一個標誌來追蹤其中哪些是有效的,儘管這實際上可以透過上下文來確定。
  2. 我想您還需要一個在系統啟動時運行的事件,或者有一些其他機制將“邏輯”啟動時間初始化為實際啟動時間。
  3. 當工作站鎖定時,從目前時間減去邏輯啟動時間並將其儲存為累積正常運作時間。
  4. 當工作站解鎖時,從當前時間減去累積正常運作時間並將其儲存為邏輯啟動時間。
  5. 根據要求,從當前時間減去邏輯啟動時間並將其報告為「真實」正常運行時間。 (這將為您提供 PC 已解鎖的總時間。)

所以,舉例來說,

  1. 如果您在上午 9 點進行硬啟動,則會將上午 9 點儲存為邏輯啟動時間。
  2. 如果您在中午鎖定機器,則累積正常運作時間可節省 3 小時(中午 - 上午 9 點)。
  3. 如果您在下午 1 點解鎖計算機,則會將上午 10 點(下午 1 點 - 3 小時)儲存為邏輯啟動時間。
  4. 如果您要求下午 6 點的正常運行時間,則會報告 8 小時
    (下午 6 點 - 上午 10 點 =(中午 - 上午 9 點)+(下午 6 點 - 下午 1 點)。)

如果您能弄清楚如何觸發任務在睡眠和喚醒時運行,那麼就這樣做,它會完全滿足您的要求。 (但是讓機器進入睡眠狀態將觸發鎖定任務,並且我假設您已將系統配置為在喚醒後需要解鎖。)

相關內容