Cómo hacer que un programa se cierre automáticamente en tiempo de ejecución en Windows

Cómo hacer que un programa se cierre automáticamente en tiempo de ejecución en Windows

Necesito tener un programa que se cierre automáticamente si se ejecuta (es decir, se ejecuta, ya sea que lo active yo o el propio Windows) en Windows 10; el programa no se puede desinstalar ni desactivar de ninguna otra manera. ¿Podría esto lograrse mediante un script por lotes usando CMD, Powershell o el Programador de tareas? Explique con el mayor detalle posible, ya que no tengo experiencia en esas tecnologías (aunque soy un experto en tecnología, así que siéntase libre de usar la "jerga", solo proporcione los pasos sobre cómo usar las tecnologías). Puedo proporcionar contexto adicional al programa exacto que necesita cerrarse, pero no creo que sea absolutamente necesario y esto definitivamente podría aplicarse en muchos contextos (es decir, aplicar el mismo script con "insertexe.exe" si es necesario). Básicamente, quiero que este programa no se pueda abrir sin poder/tener que desinstalarlo o desactivarlo de ninguna otra manera.

Respuesta1

Simplemente intente configurar su script como un servicio.

y configure la política de grupo/local de su servicio para que se reinicie cuando se detenga. Como los enfoques SO aquí:

¿Cómo puedo reiniciar automáticamente un servicio de Windows si falla?

SC failure w3svc reset= 432000  actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"

Nuevamente, como [Frank Thomas], si necesita detener a cualquier administrador local, esto requiere escribir código a nivel de sistema, no código de script, para que sea lo más completo posible. Los administradores son administradores y, por diseño, pueden hacer lo que quieran en su sistema.

Respuesta2

Eche un vistazo al script por lotes a continuación; puede modificar el código start %PROGRAM%para taskkill /im %PROGRAM%finalizar su programa si se inicia. https://github.com/lu-ko/utils-windows/blob/master/watchdog/watchdog.bat También puede agregar este script bat al inicio https://www.windowscentral.com/how-create-and-run-batch-file-windows-10

Por ejemplo, este script por lotes se repetirá indefinidamente para verificar notepad.exe; si se está ejecutando, ciérrelo. Puede reemplazar la cuarta línea de código por su 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

Espero eso ayude

información relacionada