lukass
Goto Top

Überwachung von Prozessen mit der Command Line

Hallo zusammen!

Ich will eine kurze Anwendung schreiben die über das cmd überwacht ob ein Prozess am laufen ist oder nicht.

Meine erste Idee war folgende:

tasklist |findstr /I process.exe>NUL && if %errorlevel% GEQ 0 mkdir C:\running

Das ganze passiert in einem C# programm und läuft in einer Schleife jede Sekunde ab. In der while Schleife wird auch überprüft ob das Verzeichnis C:\running vorhanden ist, wenn ja soll er es löschen so dass es keine Porbleme mit dem Überschreiben gibt.
Dies funktioniert soweit auch, aber wenn dies in der while Schleife läuft funktioniert es 2 durchläufe dann wieder nicht, obwohl sich am Prozess nichts ändert.

Ganzer Code:

while (true)
{
RunInShell("C:\\Windows\\System32", "cmd.exe", "/C tasklist |findstr /I " + processName + ">NUL && if %errorlevel% 0 mkdir C:\\running");
bool exists = virtualMachine.DirectoryExistsInGuest("C:\\running");
if (exists)
{
virtualMachine.DeleteDirectoryFromGuest("C:\\runing");
Thread.Sleep(1000);
}
else
{
break;
}
}

Ich hoffe das mir jemand helfen kann bzw. selbst noch andere Lösungsvorschläge hat.
Vielen Dank und Gruß

Lukas

Content-Key: 148760

Url: https://administrator.de/contentid/148760

Printed on: April 26, 2024 at 05:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Aug 11, 2010 at 15:01:07 (UTC)
Goto Top
moin Lukas,

&& wird nur ausgeführt wenn der voherige Befehl erfolgreich war
tasklist |findstr /I process.exe>NUL && if %errorlevel% GEQ 0 mkdir C:\running
sollte sich besser so darstellen lassen
tasklist |findstr /I process.exe>NUL&&mkdir C:\running

Gruß Phil
Member: LukasS
LukasS Aug 12, 2010 at 08:56:05 (UTC)
Goto Top
Danke schonmal ich werds probieren.


EDIT: Habs getestet, gleicher Fehler wie zuvor.
Member: LukasS
LukasS Aug 13, 2010 at 12:02:20 (UTC)
Goto Top
Ok habs jetzt anders gelöst.

Da ich es dies ja mit C# programmiert habe habe ich einfach die Funktion des .NET Frameworks genutzt face-smile

Lukas