
我需要一個程序,如果在 Windows 10 上執行(也稱為運行,無論是由我還是 Windows 本身觸發),該程序會自動關閉 - 該程序無法以任何其他方式卸載或停用。這可以透過使用 CMD、Powershell 或任務計劃程序的批次腳本來完成嗎?請盡可能詳細地解釋,因為我沒有這些技術的專業知識(儘管我精通技術,所以請隨意使用“行話” - 只需提供如何使用這些技術的步驟)。我可以為需要關閉的確切程式提供額外的上下文,但我認為這不是絕對需要的,而且這肯定可以應用於許多上下文(即,如果需要,可以使用“insertexe.exe”應用相同的腳本)。基本上我想讓這個程式無法打開,而不能/必須以任何其他方式卸載或停用。
答案1
,並將服務的群組/本機原則設定為在停止時重新啟動。例如這裡的 SO 方法:
SC failure w3svc reset= 432000 actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"
再一次,正如[Frank Thomas],如果您需要停止任何本地管理員,那麼這需要編寫系統級程式碼,而不是腳本程式碼,以盡可能完整。管理員就是管理員,按照設計,他們可以在系統上做任何他們想做的事情。
答案2
看一下下面的批次腳本,您可以修改程式碼start %PROGRAM%
以taskkill /im %PROGRAM%
在程式啟動時終止它。
https://github.com/lu-ko/utils-windows/blob/master/watchdog/watchdog.bat
您也可以將此bat腳本加入啟動中
https://www.windowscentral.com/how-create-and-run-batch-file-windows-10
例如,這個批次腳本將永遠循環檢查 notepad.exe,如果它正在運行則終止它。您可以將第四行程式碼替換為您的application.exe。
@echo off
set TIMEOUT_RUNNING=20
set TIMEOUT_STOPPED=5
set "PROCESS_NAME=notepad.exe"
goto loop
:loop
tasklist /FI "IMAGENAME eq %PROCESS_NAME%" /NH | find /I /N "%PROCESS_NAME%" >NUL
if "%ERRORLEVEL%"=="0" (
echo [%DATE% %TIME%] Process %PROCESS_NAME% is running - Kill
taskkill /im "%PROCESS_NAME%"
timeout %TIMEOUT_RUNNING%
) else (
echo [%DATE% %TIME%] Process %PROCESS_NAME% is not running
timeout %TIMEOUT_STOPPED%
)
goto loop
希望能幫助你