iT邦幫忙

0

停止關機&延遲關機

各位大大好
小弟有用C#寫一個小程式
用於會議室電腦關機前的提醒 (東西歸位之類的)
並在提醒時倒數10秒關機

但現在想不到辦法怎麼讓使用者在按下關機後執行此程式
原本方向是寫一個Script 阻止關機動作並執行EXE
放在gpedit.msc的關機指令碼
並設成先執行Powershell腳本

shutdown -a
[System.Diagnostics.Process]::Start("C:\Shutdownhint.exe")

但是實際測試卻還是直接關機了
shutdown -a並沒有執行成功

想問各位大大有甚麼方法可以延遲關機或是阻止關機嗎?

DennisLu iT邦研究生 1 級 ‧ 2022-01-20 17:35:46 檢舉
gpedit.msc 設定原則 禁止 關機 button使用
然後寫批次放在桌面 教育使用者 關機請執行桌面上的批次來關機
shutdown指令加上倒數參數與msg內容做到關機倒數兼訊息提醒
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
dophintil
iT邦新手 4 級 ‧ 2022-02-11 15:45:53
最佳解答

寫一個單純的bat做到了~不知道呈現方式能不能滿足大大想的

  1. 寫一個bat,內容如下供參考,最後的30是畫面會停30秒的意思
    2.存檔記得選ANSI(看你DOS預設編碼),檔案放在例如C:\根目錄
@echo off
echo.
echo 離開教室前,請收拾好桌面
echo 謝謝您的配合
echo.
ping -n 30 127.0.0.1 >NUL
  1. 執行gpedit.msc修改兩個地方
    a. 電腦設定 / Windows設定 / 指令碼-(啟動/關機)
    在關機裡面新增上面那個bat
    b. 電腦設定 / 系統管理範本 / 系統 / 指令碼
    啟用「執行關機指令碼時顯示其中的指示」
    (參考)

(補)
3. 執行regedit修改下面位置的「HiberbootEnabled」,1改0
(這個沒設定的話,有高機率會讓Windows忽略關機script...)
參考

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power

結果如下
https://ithelp.ithome.com.tw/upload/images/20220211/20144588NFeErRsHbk.jpg

看更多先前的回應...收起先前的回應...
ahfuyeuem iT邦研究生 4 級 ‧ 2022-02-14 08:42:41 檢舉

這個一樣會優先關機

dophintil iT邦新手 4 級 ‧ 2022-02-14 09:54:37 檢舉

我測試過會等30秒喔~
不知道為什麼我掛第二次才成功,
好像第一次關機會沒吃到上面改的設定
尤其是第二個設定「執行關機指令碼時顯示其中的指示」

ahfuyeuem iT邦研究生 4 級 ‧ 2022-02-14 10:05:05 檢舉

您是測試按重新開機還是關機呢

dophintil iT邦新手 4 級 ‧ 2022-02-15 12:08:14 檢舉

我增加了第三點Orz,國外有文章提到Windows快速啟動的相關功能會讓關機script被忽略

ahfuyeuem iT邦研究生 4 級 ‧ 2022-02-15 15:38:43 檢舉

原來是HiberbootEnabled 感謝你

我要發表回答

立即登入回答