![]() |
Beenden eines Prozesses als eingeschränkter User verhindern
Hallo,
da ja im Moment in ziemlich vielen Threads über das Thema "Prozess vor dem Taskmanager verstecken" diskutiert wird, wollte ich nun auch meine Frage stellen: Da das Verstecken insbesondere auch vor alternativen Taskmanagern nicht zuverlässig möglich ist, wollte ich ich wissen, wie ich verhindern kann, dass mein Prozess terminiert wird. Ich schreibe ein Programm für die Schule und deshalb läuft es mit eingeschränkten Rechten. Im Moment benutze ich einen anderen Prozess, der prüft, ob der Hauptprozess aktiv ist und diesen bei Bedarf neu startet. Da dies aber bei einer geringen Prüfzeit, viele Ressourcen verschwendet, wäre ich über eine alternative Lösung froh. Vielleicht über ACLs? Florian |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Immer dran danken, wenn du schon eingeschränkte Rechte hast, gibt es immer einen mit höheren Rechten ;) ...
Das Programm kann im Übrigen weiterhin über den Schließen-Button beendet werden. Zugriff über bestimmte APIs gibt aber ein Access Denied ;) |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Ja, die Leute mit Admin Rechten sind eh nur die Lehrer und die haben wohl kaum Interesse das für sie geschriebene Programm unstandardmäßig zu beenden.
Den CloseButton hab ich auch schon mit CanClose = false "deaktiviert". Hast du vielleicht einen Beispielquelltext, wie man das Beenden des eigenen Prozesses verhindern kann. Ich hab nämlich kaum Erfahrung mit API und schon gar nicht mit ACLs. Florian |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Hallo,
ich hab jetzt was in der MadCollection gefunden, komme aber nicht so recht mit klar... Ich wäre sehr froh über ein Beispiel! (mit der ohne MadCollection). Danke Florian |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Um es zuverlaessig zu machen gibt es so genannte "Watchdogs". Die APIs fuers Schliessen zu hooken ist AFAIC nicht ohne weiteres moeglich, also geht man einen anderen Weg.
Du hast deine Anwendung (A) die etwas bestimmtes macht. Nun startest du darin einen Thread, welches prueft, ob ein bestimmtes Programm (B) laeuft. Wenn es nicht gestartet ist, dann hoch damit. Dieser Check sollte ca. 1 mal pro Sekunde gemacht werden: also einmal die PID holen und dann nur noch einen Aufruf von ![]() Programm B hat nun die Aufgabe, A zu ueberwachen. Dies geschieht gleich wie oben, d.h. wenn A nicht laeuft, wirds gestartet. So, wenn du jetzt einen der Prozesse ueber den Taskmanager abschiesst, wird der andere Prozess diesen sofort wieder starten. Schoenere Moeglichkeit das Beenden der Anwendung zu verhindern: Je nach Sinn und Zweck des Programms kannst du dieses als Dienst implementieren. Dazu noch ein Panel, damit gearbeitet werden kann. Ein Normalbenutzer kann keine Dienste beenden, also bist du damit sicher ;) Greetz alcaeus |
Re: Beenden eines Prozesses als eingeschränkter User verhind
schreib doch einen Service? müsste doch damit gehen, den kannste als Admin installierne undm it eingeschränkten rechten auch net beenden...
Wenn ich Müll laber sagt bescheid, hab noch net einen Service geschrieben :P |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Danke!
Das mit dem Dienst ist eine gute Idee! Wie kann ich denn mein Programm als Dienst festlegen lassen?Das Programm sollte sich unter eingeschränkten Rechten als Dienst eintragen lassen, ist aber nicht so wichtig. So wie du es oben beschrieben hast, mit den 2 Prozessen, die sich gegenseitig starten mache ich das im Moment. Da aber die Schulrechner nicht grade modern sind, geht ziemlich viel Performance drauf ... Florian |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Zitat:
Zitat:
Greetz alcaeus |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Zitat:
![]() |
Re: Beenden eines Prozesses als eingeschränkter User verhind
Ein Watchdog-Verfahren lässt sich doch leicht aushebeln. Auch mit Hausmitteln.
Einfach n Batch-Job schreiben, dass versucht in einem Loop beide exen zu killen. (kill.exe WinXP PRo only) oder ein Batch-Job, das versucht einen der beiden Prozesse zu renamen in einer loop. Dann im Taskmanager den einen killen und er wird schnell renamed, bevor er executed werden kann. EDIT: Aber probieren geht über studieren. Ich mach das mal heut abend. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz