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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von dcna91 am .
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.
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.
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).
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-
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.
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.
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:
1. compilieren
2. ins systemverzeichnis kopieren
3. im Schlüssel "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" den wert AppInit_DLLs auf den dllnamen setzen
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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Floste am .
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.