Wie das Beenden eines Javaprogrammes verhindern?

Status
Nicht offen für weitere Antworten.
G

Gordon1975

Gast
Guten Tag,

ich möchte verhindern, dass ein Benutzer meine Software beendet bzw. wenn er es tut, dass der PC gesperrt oder heruntergefahren wird.
Ich hatte gehofft mit
Runtime.getRuntime().addShutdownHook(new Thread);
beim Beenden benachrichtig zu werden so dass ich entsprechend reagieren könnte (pc herunterfahren). Leider funktioniert dieses Vorgehen nicht, wenn meine Software über den Taskmanager beendet bzw. die JVM "abgeschossen" wird.

Habt ihr noch andere Ideen? Vielleicht ein zweites Programm schreiben, dass permanent prüft ob die eigentliche Software noch aktiv ist?

Gruß
Gordon
 

AlArenal

Top Contributor
Das Abschießen über den Taskmanager kannst du nicht verhindern, es sei denn die User haben nur Userrechte und das Programm läuft bei Systemastart als Service über Administrator hoch.

Wäre ja noch schöner wenn Programme einfach sagen könnten "Ich will aber nicht dass der User oder das OS mir Befehle erteilt!"...
 

Sky

Top Contributor
Gordon1975 hat gesagt.:
Habt ihr noch andere Ideen? Vielleicht ein zweites Programm schreiben, dass permanent prüft ob die eigentliche Software noch aktiv ist?

Und wie reagierst Du, wenn erst dein "zweites Programm" und dann dein "erstes Programm" abgeschossen wird?? Dann brauchst Du entweder noch ein "drittes Programm" oder dein "erstes Programm" muss auch permanent gucken, ob dein "zweites Programm" noch da ist...

Sag doch vielleicht mal was Du genau vor hast (und vor allem warum)... vielleicht fällt uns ja noch etwas dazu ein...
 
P

perdian

Gast
Gordon1975 hat gesagt.:
Habt ihr noch andere Ideen? Vielleicht ein zweites Programm schreiben, dass permanent prüft ob die eigentliche Software noch aktiv ist?
Ich hab's noch nie probiert, aber mit einem SecurityManager könntest du schonmal innerhalb der Applikation verhindern, dass diese beended wird. Damit hättest du allerdings immer noch nicht den direkten "Abschuss" über die Taskleiste verhindert.
 
G

Gordon1975

Gast
sky80 hat gesagt.:
Und wie reagierst Du, wenn erst dein "zweites Programm" und dann dein "erstes Programm" abgeschossen wird?? Dann brauchst Du entweder noch ein "drittes Programm" oder dein "erstes Programm" muss auch permanent gucken, ob dein "zweites Programm" noch da ist...
genau, so hatte ich mir das gedacht. das hauptprogramm würde dann den "wächter" überwachen.

sky80 hat gesagt.:
Sag doch vielleicht mal was Du genau vor hast (und vor allem warum)... vielleicht fällt uns ja noch etwas dazu ein...
Vereinfacht geht es um folgendes: Ich habe eine Software die im Hintergrund läuft und schaut ob sich der Benutzer am PC befindet (Identifizierung findet über die Bluetoothschnittstelle eines Mobiltelefons statt aber das spielt keine rolle). Ist der Benutzer weg, soll der PC gesperrt werden. Ich möchte jetzt verhindern, dass ein Unbefugter meine Software beendet, bevor die Software gemerkt hat, dass der eigentliche Benutzer weg ist.

Das Hauptproblem besteht darin, das Beenden über den Taskmanager zu verhindern. Das "normale" Programmende könnte ich einfach mit einer Passworteingabe versehen oder so.

Könnt ihr mir sagen, wie ich mit Java überwachen kann ob ein bestimmes anderes Javaprogramm noch läuft? Kann ich irgendwie auf die aktive Prozessliste zugreifen? Oder die zwei Programme über Input/Output-Streams kommunizieren lassen? Das bräuchte ich eigentlich sowieso, weil auch nur eine Instanz der Software laufen soll, sprich sie soll nicht mehrfach gestartet werden können vom Benutzer.

btw. die Software soll in erster Linie unter Windows laufen, die Lösung muss also nicht unbedingt Plattformanabhängig sein aber nach Möglichkeit mit Java 1.4 funktionieren.

Gruß
Gordon
 

Sky

Top Contributor
Also, wenn Du rein mit Java auf die Prozessliste zugreifen könntest, würde mich das sehr stark wundern! Dafür brauchste wohl JNI. Aber dann kannste dein Tool selbst in C++ schreiben...

Ja, Du kannst die Programme mehrfach laufen lassen und normalerweise ist es auch kein Problem, diese miteinander 'reden' zu lassen.
 

Bleiglanz

Gesperrter Benutzer
besorg dir .NET

und schreib einen hauchdünnen Wrapper in C# o.ä, der dein Java-Programm als Dienst beim Hochfahren startet. Ist nämlich in .NET fast albern einfach, Systemdienste zu schreiben.

das ist es wohl eigentlich, was du willst??
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Update eines Programms - Beenden eines anderen Prozesses überwachen Allgemeine Java-Themen 8
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
OSchriever Externe Anwendung beenden Allgemeine Java-Themen 41
I Threads AudioInputStream separat starten und beenden; parallel programming Allgemeine Java-Themen 2
T Parallelstream vorzeitig beenden Allgemeine Java-Themen 0
S Thread beenden Allgemeine Java-Themen 9
L Prozess automatisch beenden Allgemeine Java-Themen 8
J Druckvorgang mit Java beenden (Open Office) Allgemeine Java-Themen 3
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
stylegangsta Programmablauf von vorne beginnen und manuell beenden Allgemeine Java-Themen 9
L Threads beenden Allgemeine Java-Themen 4
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
U Thread beenden Allgemeine Java-Themen 3
Developer_X Java Programm Beenden Allgemeine Java-Themen 3
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
D neuen Prozess starten und anwendung beenden. Allgemeine Java-Themen 3
A Applet Alle Threads beim schließen des Applets beenden Allgemeine Java-Themen 8
R Java Programm beenden mit SIGTERM Allgemeine Java-Themen 9
M Process wird gestoppt und nach beenden der Anwendung fortgeführt Allgemeine Java-Themen 4
H Anwendungen beenden Allgemeine Java-Themen 6
K Warum wartet diese Funktion auf beenden des Threads? Allgemeine Java-Themen 3
S Prozess der von anderem Prozess gestartet wurde beenden? (Windows Bildschirmtastatur) Allgemeine Java-Themen 4
S [THREADS] Thread sinnvoll beenden Allgemeine Java-Themen 2
O Thread beenden egal welcher Zustand? Allgemeine Java-Themen 8
S Thread beenden Allgemeine Java-Themen 50
Nicer Prozess über Prozessnamen beenden Allgemeine Java-Themen 15
K Prozess starten, überwachen und beenden Allgemeine Java-Themen 4
N BlueJ Abfangen vom Beenden Allgemeine Java-Themen 7
J Process beenden ...aber wie ? Allgemeine Java-Themen 19
G Thread nach x Sekunden beenden ... Allgemeine Java-Themen 8
B Thread beenden (von anderer Klasse) Allgemeine Java-Themen 20
D Executor Service nach getaner Arbeit beenden Allgemeine Java-Themen 3
M if - else Abfrage beenden Allgemeine Java-Themen 4
S Thread nach Timeout beenden Allgemeine Java-Themen 2
A Java-Anwendung "richtig" schließen ohne JVM zu beenden Allgemeine Java-Themen 2
B Thread soll anderen Thread beenden Allgemeine Java-Themen 5
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
T Prozess beenden Allgemeine Java-Themen 3
E beim Ende der main() das Programm nicht beenden Allgemeine Java-Themen 3
T Programm mit Tastaturbefehl beenden? Allgemeine Java-Themen 8
W Programm beim Shutdown beenden Allgemeine Java-Themen 3
P Sauberes Beenden des Programms beim Herunterfahren? Allgemeine Java-Themen 9
G Faden beenden Allgemeine Java-Themen 7
G Schleife durch Button beenden Allgemeine Java-Themen 6
C Java-Anwendung beenden Allgemeine Java-Themen 3
O Thread beenden (gnadenlos und ohne rücksicht auf Verluste) ? Allgemeine Java-Themen 17
M Beenden einer externen Java-Applikation Allgemeine Java-Themen 11
R Programm per Tastendruck beenden Allgemeine Java-Themen 19
S Thread per GUI Beenden Allgemeine Java-Themen 3
F Thread beenden ? Allgemeine Java-Themen 4
D Programm vorzeitig beenden Allgemeine Java-Themen 8
J Thread beenden und wieder starten? Allgemeine Java-Themen 20
N Openoffice unter Java beenden Allgemeine Java-Themen 18
R Thread beenden und warten, bis er fertig ist Allgemeine Java-Themen 4
E externe Anwendung aufrufen und sich selbst beenden Allgemeine Java-Themen 8
K Programm durch Tastendruck beenden Allgemeine Java-Themen 4
A Wie kann man diesen thread beenden? Allgemeine Java-Themen 17
D Thread & Process: Beenden einer Batch-Datei Allgemeine Java-Themen 8
C Programm beenden Allgemeine Java-Themen 15
G Threads Beenden Allgemeine Java-Themen 5
H Gestartetes Programm beenden ? Allgemeine Java-Themen 8
A Anwendung starten und beenden von einem anderen programm Allgemeine Java-Themen 5
G Thread beenden Allgemeine Java-Themen 2
I Methode beim Beenden Allgemeine Java-Themen 7
conan2 BufferedReader.readLine() von anderem Thread aus beenden Allgemeine Java-Themen 4
D Thread durch Mouse-Event beenden Allgemeine Java-Themen 5
W Externes Programm beenden mit eigenem Programm beenden Allgemeine Java-Themen 7
C Loggen beim beenden vom Programm Allgemeine Java-Themen 3
F Thread beenden Allgemeine Java-Themen 5
B while mit BufferedReader beenden Allgemeine Java-Themen 5
S AWT Threads richtig beenden! Wie? Allgemeine Java-Themen 9
G konsolenanwendung durch key event beenden Allgemeine Java-Themen 4
G Prozess beenden, wenn er hängt Allgemeine Java-Themen 9
S Prozesstruktur beenden Allgemeine Java-Themen 3
A Mit Java den PC beenden? Allgemeine Java-Themen 5
T Beenden mit verzögerung? Allgemeine Java-Themen 5
A Threads beenden Allgemeine Java-Themen 5
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14

Ähnliche Java Themen

Neue Themen


Oben