Richtlinien für Anwendungen
Anwendungen, die unter Windows Vista und Windows Server 2008 ausgeführt werden, sollten diesen Richtlinien entsprechen, um sicherzustellen, dass der Neustart-Manager Anwendungen bei Bedarf herunterfahren und neu starten kann, um Updates zu installieren. Dienste können die In Richtlinien für Dienstebeschriebenen Richtlinien verwenden.
Der Neustart-Manager fragt GUI-Anwendungen zum Herunterfahren ab, indem eine WM_QUERYENDSESSION Benachrichtigung gesendet wird, die den parameter lParam auf ENDSESSION_CLOSEAPP (0x1) festgelegt hat. Anwendungen sollten nicht heruntergefahren werden, wenn sie eine WM_QUERYENDSESSION Nachricht erhalten, da eine andere Anwendung möglicherweise nicht heruntergefahren werden kann. GUI-Anwendungen sollten auf die WM_QUERYENDSESSION Nachricht lauschen und einen Wert von TRUE- zurückgeben, wenn die Anwendung bereit ist, herunterzufahren und neu zu starten. Wenn keine Anwendung einen Wert von FALSE-zurückgibt, sendet der Neustart-Manager eine WM_ENDSESSION Nachricht, wobei der parameter lParam auf ENDSESSION_CLOSEAPP (0x1) festgelegt ist und der wparam Parameter auf TRUEfestgelegt ist. Anwendungen sollten nur heruntergefahren werden, wenn sie die WM_ENDSESSION Nachricht erhalten. Der Neustart-Manager sendet auch eine WM_CLOSE Nachricht für GUI-Anwendungen, die beim Empfangen WM_ENDSESSIONnicht heruntergefahren werden. Wenn eine GUI-Anwendung auf eine WM_QUERYENDSESSION Nachricht antwortet, indem ein Wert von FALSE-zurückgegeben wird, wird das Herunterfahren abgebrochen. Wenn das Herunterfahren jedoch erzwungen wird, wird die Anwendung unabhängig davon beendet.
Wenn eine GUI-Anwendung eine WM_ENDSESSION Nachricht empfängt, sollte sich die Anwendung darauf vorbereiten, innerhalb des angegebenen Timeoutzeitraums herunterzufahren. Mindestens sollten Anwendungen vorbereitet werden, indem alle Benutzerdaten und Statusinformationen gespeichert werden, die nach einem Neustart benötigt werden. Es wird empfohlen, die Benutzerdaten und den Zustand von Anwendungen regelmäßig zu speichern.
Der Neustart-Manager sendet eine CTRL_C_EVENT Benachrichtigung an Konsolenanwendungen, die heruntergefahren und neu gestartet werden müssen. Wenn eine Konsolenanwendung eine CTRL_C_EVENT Benachrichtigung empfängt, sollte die Anwendung Maßnahmen ergreifen, die erforderlich sind, um innerhalb des angegebenen Timeoutzeitraums auf ein Herunterfahren vorzubereiten. Konsolenanwendungen sollten mindestens eine HandlerRoutine--Funktion zum Behandeln der CTRL_C_EVENT-Benachrichtigung definieren und alle Benutzerdaten und Statusinformationen speichern, die nach einem Neustart benötigt werden. Es wird empfohlen, die Benutzerdaten und den Zustand von Anwendungen regelmäßig zu speichern.
Wenn Anwendungen nicht als Reaktion auf die Meldungen zum Herunterfahren heruntergefahren werden, können Installationsprogramme die Option RmForceShutdown Option der RmShutdown--Funktion verwenden, um das Herunterfahren der Anwendungen zu erzwingen. Wenn das Installationsprogramm ein erzwungenes Herunterfahren angibt, versucht der Neustart-Manager, die Anwendungen sauber zu herunterfahren, indem die Herunterfahren-Nachrichten gesendet werden, aber erzwingt, wenn dies fehlschlägt. GUI-Anwendungen und Konsolenanwendungen können zum Herunterfahren gezwungen werden, um die Installation eines kritischen Sicherheitsupdates zu ermöglichen. Da dies zu Datenverlust führen kann, sollten Anwendungen die Herunterfahren-Nachrichten behandeln und bei Bedarf sauber herunterfahren.
Anwendungen sollten sich für einen Neustart registrieren, indem sie die funktion RegisterApplicationRestart verwenden. Der Neustart-Manager kann nur Anwendungen neu starten, die für den Neustart registriert wurden. Dies ist die einzige Möglichkeit, wie der Neustart-Manager den Befehlszeilenbefehl bestimmen kann, der beim Neustart der Anwendung verwendet werden soll. Wenn die Anwendung mit einigen gespeicherten Status oder Daten erneut geöffnet werden muss, müssen diese Informationen in den Befehlszeilenbefehl einbezogen werden, der für die Anwendung registriert ist.
Anmerkung
Wenn die neu gestartete Anwendung im selben Verzeichnis ausgeführt werden muss, in dem sie vor dem Herunterfahren ausgeführt wurde, muss die Anwendung die Verzeichnisinformationen speichern und nach dem Neustart in das Verzeichnis wechseln.
Anmerkung
Die RmRestart--Funktion startet keine Anwendungen neu, die nicht als aktuell angemeldeter Benutzer ausgeführt werden. Beispielsweise startet die RmRestart--Funktion keine Anwendungen neu, die mit dem Befehl Ausführen als ausgeführt werden, der nicht als der aktuell angemeldete Benutzer ausgeführt wird. Diese Anwendungen müssen manuell neu gestartet werden.
Wenn der Neustart-Manager feststellt, dass ein Systemneustart erforderlich ist, um ein Update zu installieren, werden keine Anwendungen und Dienste heruntergefahren. Stattdessen wird dies dem Installationsprogramm überlassen, um zu entscheiden, wann ein Systemneustart geplant und das Update installiert werden soll. Installationsprogramme können die Unterbrechung von Benutzern reduzieren, die durch Updates verursacht werden, die einen Systemneustart erfordern, indem sie die ExitWindowsEx- funktion mit dem EWX_RESTARTAPPS Flag oder die InitiateShutdown--Funktion mit dem SHUTDOWN_RESTARTAPPS Flag verwenden. Durch die Verwendung dieser Kennzeichnungen wird sichergestellt, dass anwendungen, die für den Neustart registriert sind, nach einem Systemneustart neu gestartet werden, wodurch die Auswirkungen auf den Benutzer minimiert werden.