Auf einem Terminalserver kann ein Programm erst dann upgedated werden, wenn auch der letzte User das Programm beendet hat.
Bei 20 und mehr Usern kann das zum Problem werden.
Einfach mit dem Taskmanager alle Prozesse abschiesen ist auch keine saubere Lösung.
Daher:
Der Admin startet das Programm mit dem Übergabeparameter /shutdown.
Das Programm sendet daraufhin eine Windows-Message an alle Nachbarprozesse, listet alle ProzessIDs in der Konsole auf und beendet sich selbst.
Alle anderen Prozesse erhalten die Message und geben dem Benutzer z.B. folgende Mitteilung:
Zitat:
Bitte speichern Sie Ihre Änderungen und beenden Sie dieses Programm!
90% der Benutzer wird wahrscheinlich der Aufforderung nachkommen.
Die Leute, die nicht gespeichert haben, haben Pech gehabt, denn nach 3 Min probiert der Admin das Gleiche nochmal.
Und wird dann die restlichen Prozesse gnadenlos abschiesen (oder vielleicht vorher anrufen, wenn er nett ist).
In der
Unit JclAppInst der JCL gibt es die Klasse
TJclAppInstances.
Damit kann man wohl alle oben beschriebenen Aufgaben erledigen.
Nachtrag: ja, es klappt mit TJclAppInstances recht gut.