嗨,我有一個始終運行在後面的監視腳本(帶有winforms gui)。 不幸的是,當用戶嘗試手動關閉計算機時會引起用戶「這個應用程序阻止Windows關機」屏幕。使用Powershell檢測系統關機
所以我需要一個可靠方式來啓動關機時自動關閉腳本。
我想訂閱的SessionEnding - 和SessionEnded事件,但沒有奏效:
$sysevent = [microsoft.win32.systemevents]
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action { Exitfunction }
UPDATE:
$sysevent = [microsoft.win32.systemevents]
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action { [Windows.Forms.MessageBox]::Show("Shutdown!", "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Warning)}
Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnded" -Action { [Windows.Forms.MessageBox]::Show("Shutdown!", "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Warning)}
Register-WmiEvent -Class win32_computerShutdownEvent -Action { [Windows.Forms.MessageBox]::Show("Shutdown!", "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Warning)}
我說:此刻 它像這樣一個消息框來查看這些事件中的一個事實上是否會觸發,但也許由動作腳本塊執行的代碼有問題。沒有運氣。 當我嘗試關閉Windows 8.1系統時,這些事件都不會發生在中。 有沒有錯誤裏面的事件,當我讀取他們的工作。國家在所有這些「未開始」。
任何想法爲什麼?
可能重複[Powershell窗口阻止關機](http://stackoverflow.com/questions/10174075/powershell-window-preventing-shutdown) –
這就是我發佈自己以上同樣的解決方案。它不起作用,至少不是每次。不幸的是,我不能說爲什麼它不起作用,所以我正在尋找替代解決方案,如果有的話。 – Rob
嗯,沒有。不是。鏈接的帖子包含的代碼明顯多於您在此發佈的代碼,並且還包括註冊第二個活動。你應該仔細閱讀它。 (它也被接受,這通常意味着提出問題的用戶找到了解決方案。) –