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 をチェックし、実行中の場合は終了します。コードの 4 行目を 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

それが役に立てば幸い

関連情報