c# eigenen prozess ueberwachen

w5Per

Newbie
Registriert
Sep. 2011
Beiträge
3
moin moin,

bin neu hier und hoffe auf ideen.

mein problem ist:
habe ein c# (konsolenanwendung) geschrieben.
nun möchte ich reagieren auf (beenden/killen (aus taskmanager) ).
ziel soll sein: wird das eigene programm beendet soll eine meldung kommen(zB. eine messagebox) und erst danach darf das programm geschlossen werden.

was ich habe:
eine lösung auf FREMDE prozesse
"
myProcess.StartInfo.FileName= "notepad.exe";
myProcess.Exited += new EventHandler(myProcess_Exited);
myProcess.EnableRaisingEvents = true;
myProcess.Start();
....
"

leider nicht auf den eigenen.


für hilfen sehr dankbar
 
Was spricht gegen
myProcess.StartInfo.FileName= "MEINE_ZU_ÜBERWACHENDE_KONSOLENANWENDUNG.exe";
?
 
Wenn das Betriebssystem deinen Prozess beendet, wird dieser beendet. Da kannst du nichts mehr machen. Lösung wäre ein zweiter Prozess, der den ersten überwacht und ggf. deine Messagebox anzeigt.
 
danke das so schnell die antworten kommen.

1. myProcess.StartInfo.FileName=anwendung
das geht nicht, da "myProcess.Start();" hier eine exception wirft.
der prozess ist ja schon an.
oder hab ich dich falsch verstanden?

2.das mit einem 2 prozess zu lösen der den ersten überwacht, möchte ich nicht!
es gibt ja auch die lösung das ich shutdown-Anweisung im aktuellen prozess überwachen kann, warum also sollte es nicht auch auf BEENDEN funktionieren?
 
w5Per schrieb:
2.das mit einem 2 prozess zu lösen der den ersten überwacht, möchte ich nicht!
es gibt ja auch die lösung das ich shutdown-Anweisung im aktuellen prozess überwachen kann, warum also sollte es nicht auch auf BEENDEN funktionieren?

Das Shutdown-Ereignis ist ein normales Ereignis im Leben eines Prozesses, über das dieser benachrichtigt wird, wenn er sich zu beenden hat bzw. gleich beendet wird, um die Gelegenheit zu haben, gegebenenfalls Ressourcen sauber freizugeben.

Beim Beenden über den Taskmanager dagegen wird dein Prozess bei dem, was er gerade macht, einfach unterbrochen und beendet, ohne dass das Betriebssystem dich noch darüber benachrichtigt. Das ist so, um dem Benutzer am Ende die Kontrolle zu überlassen, welche Prozesse laufen sollen und welche nicht.

Was gehen würde ist, das Securitytoken deines Prozesses so zu verändern, dass normale Benutzer es nicht mehr schließen können, dann kommt im Task-Manager die Fehlermeldung "Zugriff verweigert" (wie bei Systemdiensten etc.), wenn sie es versuchen. Allerdings braucht dein Prozess dann Administratorrechte, um sein eigenes Token dermaßen zu manipulieren.

P.S.: Sehe gerade, dass ist nicht das, was du eigentlich willst. In deinem Fall bleibt dir wirklich nur ein zweiter Prozess, da der erste ja auf sein eigenes "Abwürgen" nicht reagieren kann, da er ja ab diesem Moment nicht mehr läuft ;-).
 
Zuletzt bearbeitet:
dieser idee werd ich mal folgen.
"Securitytoken"

wird ausprobiert.

danke sehr.
 
Zurück
Oben