利用 .inf 安裝腳本的特性:右鍵點擊 .inf 選「安裝」時,Windows 會依腳本內容執行一系列操作。我們偷樑換柱,將維護指令(如 defrag、del、xcopy)寫入 .inf,再透過排程任務定期觸發,實現無人值守維護並自動關機。
系統碟根目錄建立 Main.bat:
cd\
C:
cd Windows\system32
defrag C: /f
chkntfs C:
可自行擴充:del /q /s %temp%\* 清理暫存檔、xcopy 備份重要資料等。
[version]
Signature="$CHICAGO$"
AdvancedINF=2.5,"advpack.dll"
[DefaultInstall]
RunPreSetupCommands=Tst.PreSetup
RunPostSetupCommands=Tst.PostSetup
[Tst.PreSetup]
C:\Main.bat
[Tst.PostSetup]
C:\WINDOWS\SYSTEM32\TSSHUTDN.EXE 0 /DELAY:0 /POWERDOWN
關鍵點: Signature 必須為 $CHICAGO$ 否則無效。TSSHUTDN.EXE 參數意為「關閉 Windows + 關閉電源」。
C:\WINDOWS\System32\rundll32.exe advpack.dll,LaunchINFSectionEx C:\Main.inf,DefaultInstall,,32
呼叫 advpack.dll 的 LaunchINFSectionEx 函數啟動 .inf 安裝流程。
C:\Begin.bat,設定為「每週」執行(如週日 23:30)。Begin.bat。Begin.bat 以 Main.inf 啟動安裝流程。[Tst.PreSetup] → 呼叫 Main.bat 執行維護工作。[Tst.PostSetup] → 呼叫 TSSHUTDN.EXE 關機斷電。Main.bat 確認無誤後再部署排程。