Windows에서 런타임 시 프로그램이 자동으로 닫히도록 하는 방법

Windows에서 런타임 시 프로그램이 자동으로 닫히도록 하는 방법

Windows 10에서 실행되는 경우(나 또는 Windows 자체에 의해 실행되는 경우) 자동으로 닫히는 프로그램이 필요합니다. 이 프로그램은 다른 방법으로 제거하거나 비활성화할 수 없습니다. CMD, Powershell 또는 작업 스케줄러를 사용하는 배치 스크립트를 통해 이를 수행할 수 있습니까? 저는 해당 기술에 대한 전문 지식이 없으므로 최대한 자세히 설명해주세요. 기술에 능숙하기 때문에 "용어"를 자유롭게 사용해도 됩니다. 기술을 사용하는 방법에 대한 단계만 제공하면 됩니다. 닫아야 하는 정확한 프로그램에 추가 컨텍스트를 제공할 수 있지만 이것이 꼭 필요하다고 생각하지 않으며 이는 확실히 많은 컨텍스트에 적용될 수 있습니다(예: 필요한 경우 "insertexe.exe"를 사용하여 동일한 스크립트 적용). 기본적으로 나는 다른 방법으로 제거하거나 비활성화하지 않고도 이 프로그램을 열 수 없도록 만들고 싶습니다.

답변1

스크립트를 서비스로 설정해 보세요.

, 중지 시 다시 시작되도록 서비스의 그룹/로컬 정책을 설정합니다. SO는 여기에 접근합니다.

Windows 서비스가 충돌하는 경우 자동으로 다시 시작하려면 어떻게 해야 합니까?

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

도움이 되길 바라요

관련 정보