Hallo,
bezgl. des oben erwähnten Themas gibt es ja seit
W2k folgenden Ablauf bzw. damit verbundenes Problem:
Bei einem ausgelösten Shutdown wird jedes zu dieser Zeit noch laufende Programm jeweils zuerst mit der WM_QueryEndSession-Message beschickt. Als nächstes, sofern der Shutdown davor durch die
Query nicht abgelehnt wurde, bekommt es dann schon die WM_EndSession-Message, woraufhin das Prog beendet wird. DANACH ERST wird das nächste noch laufende Programm auf die gleiche Weise behandelt. Da man so ein Shutdown-Protokoll-Programm normalerweise aber über den Run-Schlüssel der Registry startet und die Programme beim Shutdown dann in der gleichen Reihenfolge aufgerufen werden, in der sie auch gestartet wurden, kann also leicht folgende Situation entstehen: Dieses besagte Protokoll-Programm wird als erstes aufgerufen, protokolliert den Zeitpunkt des Shutdowns und wird dann beendet. Danach kommt das nächste noch laufende Programm dran, kriegt die WM_QueryEndSession-Message und lehnt den Shutdown aber ab. Folge: Der Shutdown wurde protokolliert, das dafür zuständige Programm beendet und danach wurde der Shutdown-Vorgang aber selbst abgebrochen!!!
Als Lösung habe ich mir dabei schon überlegt:
1.) ...dass sich das Protokollprogramm in dieser Situation einfach selbst nochmal aufruft, um so ans "Ende" aller momentan noch laufenden Programme zu gelangen ...und damit Shutdown-mäßig auch erst dann angesprochen zu werden, wenn es nach ihm auch wirklich zum Shutdown kommt.
2.) ...man müsste diesem Protokollprogramm so einen Status verpassen können, wie Systemprogrammen ala, svchost.exe,WinMgmt.exe o. spoolsv.exe. ...die ja auch irgendwie nicht abgefragt werden und Shutdown-mäßig auch erst irgendwie "später" dran sind. Nur wie das am Besten bewerkstelligen???
...oder gibt's da event. noch andere/bessere Möglichkeiten?
Thx.