Cmd ploppt auf und verschwindet instant wieder?
wie in dem beitrag davor schon gesagt kommt es alle 10 sek und ist direkt wieder weg. Laut Cmd ist es eine System 32 cmd aufgabe. Aber task manager sagt mir das Windows nicht mehr verwendbar ist falls ich dieses beenden sollte..
kein positiv bewertetes Virenschutzprogramm inkl. Micros. Defender findet es nicht
bitte um dringende hilfe werde die ganze zeit aus dem Full Screen geworfen
weis irgendjemand was die alle bedeuten?
1 Antwort
Von einem Programm/Script, welches sich öffnet und gleich wieder schließt bekommt man im Taskmanager (in der Regel) nichts zu sehen.
Werden irgendwelche Scripte in cmd oder powershell ausgeführt, bekommt AV-Software oft auch nichts mit (solange die Scripte keine auffälligen Techniken verwenden).
Ich hatte schon öffter Fragen zu sporadisch öffnenden cmd/powershell -Fenstern. Solche "aufflackernden" Fenster lassen sich mit herkömmlichen Mitteln nur selten dingfest machen. um derartiger "Übeltäter" habhaft zu werden, habe ich mir ein kleines Script gebastellt, welches auf Programmstart/-schließen -Systemereignisse lauert und diese in seinem Fenster und Logdateien aufzeichnet .
ProcWatch.cmd
# : Begin of batch section
@echo off
pushd "%~dp0"
set "thisPath=%~f0"
start "ProcessWatcher" powershell "&([Scriptblock]::Create((gc '%thisPath%' -enc UTF8 -raw )))" &rem führe diese Datei in Powershell aus
exit /b
: End of batch sec<tion#>
$queryProcessStart = "SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_Process'"
$queryProcessClose = "SELECT * FROM __InstanceDeletionEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_Process'"
$Start_Action = {
$ProcName = $event.SourceEventArgs.NewEvent.TargetInstance.Name
$ProcCreated = $event.SourceEventArgs.NewEvent.TargetInstance.CreationDate
$ProcCmdLine = $event.SourceEventArgs.NewEvent.TargetInstance.CommandLine
$LogString ='Start Process: "{1}" starttime: @{0:dd.MM.yyyy HH:mm:ss,ffffff} commandline: {2}' -f $ProcCreated,$ProcName,$ProcCmdLine
write-host $LogString -fo green
$LogString | Out-File 'procStarts.txt' -Append
}
$Close_Action = {
$ProcName = $event.SourceEventArgs.NewEvent.TargetInstance.Caption
$ProcCreated = $event.SourceEventArgs.NewEvent.TargetInstance.CreationDate
$EventTime=[DateTime]::FromFileTime($event.SourceEventArgs.NewEvent.TIME_CREATED)
$LogString ='Close Process: "{1}" starttime: @{0:dd.MM.yyyy HH:mm:ss,ffffff} approx.closetime: @{2:dd.MM.yyyy HH:mm:ss,ff}' -f $ProcCreated,$ProcName,$EventTime
write-host $LogString -fo yel
$LogString | Out-File 'procCloses.txt' -Append
}
$null = Register-CimIndicationEvent -Query $queryProcessStart -Action $Start_Action
$null = Register-CimIndicationEvent -Query $queryProcessClose -Action $Close_Action
Write-Host 'waiting for process-events ...'
while ($True) {Wait-Event}
Bei einem Programmstart wird auch dessen Kommandozeile gelistet, so das auch ersichtlich ist, mit welchen Parametern Programme starten. Dazu gehören auch eventuelle Namen von Scripten oder Powershell-Einzeiler.das sieht dann so aus.
Start Process: "powershell.exe" starttime: @13.05.2025 09:01:25,295540 commandline: powershell -WindowStyle hidden "&([Scriptblock]::Create((gc 'C:\Users\Erzesel Secure\Desktop\clock.cmd' -enc UTF8 -raw )))"
...und für das Beenden des Prozesses:
Close Process: "powershell.exe" starttime: @13.05.2025 09:01:25,295540 approx.closetime: @13.05.2025 09:01:34,97
Da dieses Script normalerweise mit Nutzerrechten ausgeführt wird, hat es keinen Einblick bezüglich der Kommandozeilen von Prozessen auf Admin- oder Systemlevel.
Aus technischen Gründen (und der Einfacheit halber) verwende ich für öffnen und schließen getrennte Logs, um zu vermeiden, das sich nahezu gleichzeitige Ereignisse die jeweils andere Ereignisroutine blockieren.
Da in beiden Logs sie Startzeiten auf Microsekunden genau angegeben sind, kann man relativ leicht ermitteln was zueinander gehört.
Ich hoffe dies bringt Dir etwas Erleuchtung welche Prozesse auf Deinem Rechner ihr "Unwesen" treiben.