Richtlinien für Anwendungen

Anwendungen, die unter Windows Vista und Windows Server 2008 ausgeführt werden, sollten diese Richtlinien einhalten, um sicherzustellen, dass der Neustart-Manager Anwendungen bei Bedarf herunterfahren und neu starten kann, um Updates zu installieren. Dienste können die Richtlinien verwenden, die unter Richtlinien für Dienste beschrieben sind.

  • Der Neustart-Manager fragt GUI-Anwendungen zum Herunterfahren ab, indem eine WM_QUERYENDSESSION Benachrichtigung gesendet wird, bei der der lParam-Parameter auf ENDSESSION_CLOSEAPP (0x1) festgelegt ist. Anwendungen sollten nicht heruntergefahren werden, wenn sie eine WM_QUERYENDSESSION-Nachricht erhalten, da eine andere Anwendung möglicherweise nicht zum Herunterfahren bereit ist. GUI-Anwendungen sollten auf die WM_QUERYENDSESSION-Nachricht lauschen und den Wert TRUE zurückgeben, wenn die Anwendung zum Herunterfahren und Neustarten vorbereitet ist. Wenn keine Anwendung den Wert FALSE zurückgibt, sendet der Neustart-Manager eine WM_ENDSESSION-Nachricht , wobei der lParam-Parameter auf ENDSESSION_CLOSEAPP (0x1) und der wparam-Parameter auf TRUE festgelegt 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 nicht heruntergefahren werden, wenn sie WM_ENDSESSION empfangen. Wenn eine GUI-Anwendung auf eine WM_QUERYENDSESSION-Nachricht antwortet, indem sie den Wert FALSE zurückgibt, 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. Anwendungen sollten sich mindestens vorbereiten, indem alle Benutzerdaten und Zustandsinformationen gespeichert werden, die nach einem Neustart benötigt werden. Es wird empfohlen, dass Anwendungen die Benutzerdaten und den Zustand in regelmäßigen Abständen 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 die erforderlichen Maßnahmen ergreifen, um sich innerhalb des angegebenen Timeoutzeitraums auf das Herunterfahren vorzubereiten. Konsolenanwendungen sollten mindestens eine HandlerRoutine-Funktion definieren, um die CTRL_C_EVENT Benachrichtigung zu verarbeiten, und alle Benutzerdaten und Zustandsinformationen speichern, die nach einem Neustart benötigt werden. Es wird empfohlen, dass Anwendungen die Benutzerdaten und den Zustand in regelmäßigen Abständen speichern.

  • Wenn Anwendungen als Reaktion auf die Meldungen zum Herunterfahren nicht heruntergefahren werden, können Installationsprogramme die 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 herunterzufahren, indem die Meldungen zum Herunterfahren gesendet werden, erzwingt sie jedoch, 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 Meldungen zum Herunterfahren verarbeiten und bei Bedarf sauber herunterfahren.

  • Anwendungen sollten sich mit der Funktion RegisterApplicationRestart für einen Neustart registrieren. Mit dem Neustart-Manager können nur Anwendungen neu gestartet werden, die für den Neustart registriert wurden. Dies ist die einzige Möglichkeit, mit der der Neustart-Manager den Befehlszeilenbefehl bestimmen kann, der beim Neustarten der Anwendung verwendet werden soll. Wenn die Anwendung mit gespeicherten Status oder Daten erneut geöffnet werden muss, müssen diese Informationen in den Befehlszeilenbefehl aufgenommen werden, der für die Anwendung registriert ist.

    Hinweis

    Wenn die neu gestartete Anwendung vor dem Herunterfahren in demselben Verzeichnis ausgeführt werden muss, in dem sie ausgeführt wurde, muss die Anwendung die Verzeichnisinformationen speichern und nach dem Neustart in das Verzeichnis wechseln.

     

    Hinweis

    Die RmRestart-Funktion startet keine Anwendungen neu, die nicht als aktuell angemeldeter Benutzer ausgeführt werden. Die RmRestart-Funktion startet beispielsweise keine Anwendungen neu, die mit dem Befehl Ausführen als gestartet wurden und nicht als aktuell angemeldeter Benutzer ausgeführt werden. 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 bleibt dies dem Installationsprogramm überlassen, um zu entscheiden, wann ein Systemneustart geplant und das Update installiert werden soll. Installationsprogramme können die Unterbrechung von Benutzern durch Updates reduzieren, die einen Systemneustart erfordern, indem sie die Funktion ExitWindowsEx mit dem flag EWX_RESTARTAPPS oder die InitiateShutdown-Funktion mit dem flag SHUTDOWN_RESTARTAPPS verwenden. Mit diesen Flags 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.