
Ich brauche ein Programm, das automatisch geschlossen wird, wenn es unter Windows 10 ausgeführt wird (d. h. ausgeführt wird, egal ob es von mir oder Windows selbst ausgelöst wird). Das Programm kann nicht deinstalliert oder auf andere Weise deaktiviert werden. Könnte dies über ein Batch-Skript mit CMD, Powershell oder dem Taskplaner erreicht werden? Bitte erklären Sie es so ausführlich wie möglich, da ich keine Fachkenntnisse zu diesen Technologien habe (obwohl ich technisch versiert bin, können Sie ruhig den „Jargon“ verwenden – geben Sie einfach die Schritte zur Verwendung der Technologien an). Ich kann zusätzlichen Kontext zu dem genauen Programm angeben, das geschlossen werden muss, aber ich denke nicht, dass dies unbedingt erforderlich ist, und dies könnte definitiv in vielen Kontexten angewendet werden (d. h. dasselbe Skript bei Bedarf mit „insertexe.exe“ anwenden). Grundsätzlich möchte ich dieses Programm nicht öffnen können, ohne es deinstallieren oder auf andere Weise deaktivieren zu können/müssen.
Antwort1
, und legen Sie die Gruppen-/lokale Richtlinie Ihres Dienstes so fest, dass er nach dem Stoppen neu gestartet wird. So wie die SO-Ansätze hier:
Wie kann ich einen Windows-Dienst automatisch neu starten, wenn er abstürzt?
SC failure w3svc reset= 432000 actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"
Noch einmal, wie [Frank Thomas] sagt: Wenn Sie einen lokalen Administrator stoppen müssen, müssen Sie Code auf Systemebene schreiben, nicht Skriptcode, um so vollständig wie möglich zu sein. Administratoren sind Administratoren und können auf ihrem System tun, was sie wollen.
Antwort2
Schauen Sie sich das Batch-Skript unten an. Sie können den Code start %PROGRAM%
so ändern, dass taskkill /im %PROGRAM%
Ihr Programm beim Start beendet wird.
https://github.com/lu-ko/utils-windows/blob/master/watchdog/watchdog.bat
Sie können dieses Bat-Skript auch zum Start hinzufügen
https://www.windowscentral.com/how-create-and-run-batch-file-windows-10
Dieses Batchskript wird beispielsweise endlos wiederholt, um notepad.exe zu überprüfen und zu beenden, wenn es ausgeführt wird. Sie können die vierte Codezeile durch Ihre application.exe ersetzen.
@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
ich hoffe es hilft