我有同樣的問題,我找遍了,但沒有發現任何有用的東西。
最後,我剛開始用不同的事情上浪費我可以想到,我可以想到兩種解決方法我們的問題。
事件查看器可以告訴您關機已安排,但沒有安排時間。
一個想法是查詢事件查看器以查看最近的系統關閉,最近的計劃關閉以及計劃關閉的最近取消。如果計劃的關閉比最近的取消或關閉更新,那麼正在進行中。 事件ID是: 1074的啓動定時關機, 1075已取消定時關機,在Windows日誌/系統 12系統啓動時 13系統關機 (全部屬於Windows日誌/系統)
我懶得在批處理文件中這樣做,但我知道這是可能的。
所以這就是我最終做的: 而不是安排關機,只是試圖中止它。如果沒有關機正在進行,它將會報錯(無法中斷系統關機,因爲沒有關機正在進行中(1116))。我覺得比通過安排關機來嚇壞用戶更好。
這是我爲簡單的自動關閉腳本編寫的代碼的副本,它在取消和啓動預定關機之間切換。
@echo off
shutdown /a
if errorlevel 1 call:shutdown
goto end
:shutdown
set /p choice=Shutdown in how many minutes?
set /a mod=60
set /a mod*=%choice%
shutdown /s /t %mod%
:end
編輯 - 因爲我有更多的信息來補充我重新審視這個答案。
上述解決方案將使用/ t參數檢測是否通過shutdown.exe命令安排了關機。
如果您需要確定Windows是否安排了關機(因爲它在某些Windows更新後會自動執行),那麼會設置一個您可以查詢的註冊表項。下面是在PowerShell中,但你可以寫一個批處理文件來做同樣的事情。
Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
注:如果重啓使用Shutdown.exe的計劃,它只會Windows是否說你的電腦需要重新啓動返回true,這將不會返回true。
是的,不幸的是有幾種方法,到目前爲止我還沒有弄清楚「shutdown/r/t 60」命令如何安排它。它似乎不是一個計劃任務 - 它可能是一個低得多的水平,這使得很難檢測到沒有一個明確的API :( – Ificator 2011-05-31 16:44:16