Ich wollte dieses Problem vor ein Paar Jahren lösen, aber konnte damals keine Lösung finden. Nun interessiert mich die Frage wieder.
Ich möchte mein Programm Prozess ganz einfach vor einem Kill schützen. Ich möchte nicht das der Benutzer es auf irgendeiner Weise den Prozess, z.B. über den Task Manager abschiessen kann. Das aus Schutz, weil ich die Software für eine Schule schreibe und die Benutzer sehr aggressiv gegen solche Massnahmen vorgehen.
Geht das evtl. über ein Windows Service oder sonst irgend ein Windows Hook? bzw. eine Ausblendung des Prozesses wäre auch schon sehr hilfreich.
Wichtig hierbei ist nur das ich die Möglichkeit habe die Software anfangs als Administrator zu starten! Das ist kein Problem. Die Benutzer die an den PC's arbeiten haben dann keine Lokale Admin Rechte mehr.
Du kannst ja versuchen das Programm hinter einem Prozess zu "verstecken".
Benenn es einfach so, wie ein ähnlicher System Prozess.
Zusätzlich kannst du in Form1.Designer.cs
this.ShowInTaskbar = false;
setzen.
So kannst du zumindest ausschließen, dass das Programm direkt erkannt und geschlossen wird. Vor ganz pfiffigen Schülern wird es allerdings mit dieser Methode nicht sicher sein.
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Hallo dcna91,
soweit ich weiß, kann man das mit einem Hook auf die entsprechende Funktion in der Win32-API machen. Darauf reagiert man und unterbindet dann das killen.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Wenn die Benutzer keine Admin-Rechte haben, dann können diese doch gar nicht über den TaskManager den Prozess killen (wenn dieser von einem Admin-Konto aus erstellt wurde).
Doch, können sie.
Dies hat bei uns an der Schule auch immer funktioniert, obwohl wir Schüler keine Admin-Rechte hatten.
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Doch, können sie.
Dies hat bei uns an der Schule auch immer funktioniert, obwohl wir Schüler keine Admin-Rechte hatten.
Falsch! Da must Du was verwechseln.
@dcna91
Starte Deinen Prozess als System-Dienst und schon können User die kein administratives Recht haben diesen nicht beenden.
Grüße
Dies hat bei uns an der Schule auch immer funktioniert, obwohl wir Schüler keine Admin-Rechte hatten.
Dann hattest du eventuell lokale Adminrechte, oder die Kiste war einfach zu offen konfiguriert.
Unter XP und später sollte ein normaler Benutzer nicht so ohne weiteres in der Lage sein, irgendein Dienst unter dem System Konto abzuschiessen.
Mag sein, dass ich hier etwas durcheinander bringe oder die Situation bei uns eine andere war.
Aber in der Theorie ist es natürlich so, dass ein "normaler" User nicht in der Lage sein sollte dies zu tun.
Gruß,
Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
Erinnert mich ein wenig an das Programm was unsere Lehrer meinten uns vorsetzen zu müssen während der Ausbildung. - Nannte sich Mastereye und unsere Lehrer waren Tatsächlich der Meinung die können uns den Bildschirm sperren und das Programm könne nicht umgangen werden. - Schwupps Firewall an und dann wars das auch schon. Also ich denke in welcher Hinsicht auch immer, irgend ein Pfiffiger Schüler wird auch das umgehen können-
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Also ich denke in welcher Hinsicht auch immer, irgend ein Pfiffiger Schüler wird auch das umgehen können-
Damit hast du prinzipiell recht aber wenn die Benutzerrechte korrekt gesetzt sind, dann tut man sich unter windows schon extrem schwer und wenn es ein schüler trotz korrekt gesetzter rechte schafft, dann hat er sich es verdient und ist in der schule ohnhin fast fehl am platz 😉
ps: das mit der firewall deaktivieren und aktivieren ist auch eine rechtesache....
Ist aber auch schon interessant wenn man in einer Beurfsschule an einem Rechner sitzt und die Firewall aus ist, weil den Port nur freizugeben wäre für unseren Admin ja zu einfach gewesen g. Der lies lieber die Passwortlisten neben uns liegen.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Ich hatte mal lust dazu und hab mal de unsaubere variante mit hooks implementiert. Und weil es in c++ sauberer und schneller geht, habe ich es auch in c++ gemacht^^
Resultat ist im Angang. Ich hab mal als test das Abschießen des taskmanagers aus einem anderen prozess (inklusive tricks wie createremotethread und co) verhindert. Es ist ein check eingebaut, das sich das programm selber beenden darf. Außerdem wird das Senden von WM_Close und WM_quit nicht verhindert, aber das sollte kein problem darstellen, man kann seine eigene anwendung entsprechend anpassen.
wirklich wasserdicht ist das system nicht, es lässt sich mit ca. 7 zeilen c++ umgehen, aber nur wenn man weiß, wie es funktioniert.
Verwendung:
es ist aber wie gesagt die unsaubere variante und man muss ziemlich aufpassen. Deshalb ist es in 99% der fälle b ersser rechte zu verteilen.
vermute, dass es auch das abkann, aber ich probiere es gleich mal aus...
[EDIT]
2 meldungen: "zugriff verweigert" und "mindestens ein prozess aus der prozessstruktur konnte nicht beendet werden"
also hat der schutz es abgefangen...
Hallo Floste,
es wäre nett, wenn du dein Beispielprojekt in den .NET-Komponenten und C#-Snippets veröffentlichen kannst. Andere, die danach suchen, wären bestimmt froh, wenn sie sowas finden. Es gibt bestimmt Interessenten.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.