Introduction
大家都知道要讓系統啟動時執行特定程式,最簡單的方法就是把那隻程式的link丟到啟動中。
也可以新增這隻程式的執行路徑到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。上述兩種方法,都必須登入後才會執行,當然我是可以讓它auto-login的,但我想這通常只會用於個人或測試環境。如果想要在系統啟動後就執行,可以透過系統管理工具的工作排程器。reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTO_TEST_BOOTSTRAP /t REG_SZ /d "%BASE%bootstrap.bat" /f
Just Do It!
為了方便我寫了一隻Batch,讓我可以直接將某隻程式註冊為開機執行。
@echo off set RUN_TASK="%1" if %RUN_TASK% == "" goto emptyError set TASK_NAME=%~nx1 schtasks /Create /RU SYSTEM /RL HIGHEST /TN %TASK_NAME% /SC ONSTART /TR %RUN_TASK% goto :finish :emptyError echo Please enter a valid cmd goto :finish :finish pause
主要是透過schtasks去排程。使用/RU SYSTEM讓這隻程式是以SYSTEM身分去執行;使用/RL HIGHEST確保以最高權限執行;使用/SC ONSTART指定開機執行;而/TN與/TR分別為Task ID與執行程式路徑。執行後,應該可以在工作排程器中看到。如果重複註冊會詢問你是否要覆蓋。
如果有參數,我建議是寫一個Batch將參數都放在裡面,會比較單純。
另外實做了removeScheduleTask.bat,負責移除註冊的SheduledTask,與scheduleTaskOnStart.bat是一對。
@echo off set RUN_TASK="%1" if %RUN_TASK% == "" goto emptyError set TASK_NAME=%~nx1 schtasks /Delete /F /TN %TASK_NAME% goto :finish :emptyError echo Please enter a valid cmd goto :finish :finish pause
友藏內心獨白: 這篇內容並不單純,讓我們繼續看下去。
留言
張貼留言