Freigeben über


Dienständerungen für Windows Vista

Am Dienstmodell wurden erhebliche Änderungen vorgenommen, um Leistung, Zuverlässigkeit, Sicherheit, Verwaltung und Verwaltung von Diensten zu verbessern.

In der folgenden Tabelle sind die Verbesserungen der Dienste für Windows Vista zusammengefasst.

Erweiterung BESCHREIBUNG
Verzögerter automatischer Start
Verzögerte Dienste für den automatischen Start werden kurz nach dem Start des Systems gestartet. Dadurch wird die Systemstartleistung verbessert, während gleichzeitig ein automatischer Start für diese Dienste bereitgestellt wird. Um das Flag für verzögerten automatischen Start festzulegen, rufen Sie die ChangeServiceConfig2-Funktion mit SERVICE_CONFIG_DELAYED_AUTO_START_INFO auf.
Fehlererkennung und -wiederherstellung
Wenn ein Dienst fehlschlägt, kann der Dienststeuerungs-Manager (SCM) eine Fehleraktion ausführen, z. B. einen Neustart des Diensts, um nach diesem Fehler wiederherzustellen. Um eine Fehleraktion zu konfigurieren, rufen Sie ChangeServiceConfig2 mit SERVICE_CONFIG_FAILURE_ACTIONS auf.
Preshutdown-Benachrichtigungen
Ein Dienst kann sich registrieren, um eine SERVICE_CONTROL_PRESHUTDOWN Benachrichtigung in seiner HandlerEx-Funktion zu erhalten, bevor er die Benachrichtigung zum tatsächlichen Herunterfahren empfängt. Dies bietet Diensten einen längeren Herunterfahrensvorgang, um mehr Zeit für das ordnungsgemäße Herunterfahren zu erhalten. Um den Timeoutwert festzulegen, rufen Sie ChangeServiceConfig2 mit SERVICE_CONFIG_PRESHUTDOWN_INFO auf.
Eingeschränkter Netzwerkzugriff
Sie können Dienst-SIDs verwenden, um den Zugriff auf Ports, Protokolle oder die Richtung des Netzwerkdatenverkehrs einzuschränken. Verwenden Sie die INetFwServiceRestriction-Schnittstelle , um den Zugriff eines Diensts auf das Netzwerk einzuschränken.
Ausführen mit den geringsten Rechten
Dienste können unter jedem Konto ausgeführt werden, das die erforderlichen Berechtigungen enthält (LocalService, NetworkService, LocalSystem, ein Domänenkonto oder ein lokales Konto), und die erforderlichen Berechtigungen angeben, indem ChangeServiceConfig2 mit SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO aufgerufen wird. Der SCM entfernt alle Berechtigungen, die nicht erforderlich sind.
Dienstisolation
Ein Dienst kann Objekte, z. B. Dateien oder Registrierungsschlüssel, für seine ausschließliche Verwendung isolieren, indem er sie mit einem Zugriffssteuerungseintrag absichert, der eine Dienst-SID enthält. Nachdem diese SID einem Dienst zugewiesen wurde, kann der Dienstbesitzer die Zugriffssteuerungslisten der Objekte ändern, um Zugriff auf die SID zu gewähren. Dadurch kann ein Dienst auf bestimmte Objekte zugreifen, ohne unter einem Konto mit hohen Berechtigungen ausgeführt zu werden oder die Sicherheit für die Objekte zu verringern. Um die Dienst-SID festzulegen, rufen Sie ChangeServiceConfig2 mit SERVICE_CONFIG_SERVICE_SID_INFO auf.
Dienststatusänderungsbenachrichtigungen
Dienste können mithilfe der NotifyServiceStatusChange-Funktion registriert werden, um benachrichtigt zu werden, wenn ein Dienst erstellt, gelöscht wird oder eine Änderung in status aufweist. Dies ist effizienter als das Aufrufen der QueryServiceStatusEx-Funktion in einer Schleife, um status abzufragen.
Isolation von Sitzung 0
Dienste werden immer in Sitzung 0 ausgeführt. Vor Windows Vista wurde auch der erste Benutzer, der sich anmelden konnte, Sitzung 0 zugewiesen. Sitzung 0 ist jetzt ausschließlich für Dienste und andere Anwendungen reserviert, die keiner interaktiven Benutzersitzung zugeordnet sind. (Der erste Benutzer, der sich anmeldet, ist mit Sitzung 1 verbunden, der zweite Benutzer, der sich anmeldet, ist mit Sitzung 2 verbunden usw.) Sitzung 0 unterstützt keine Prozesse, die mit dem Benutzer interagieren.
Diese Änderung bedeutet, dass ein Dienst keine Nachricht an eine Anwendung posten oder senden kann und eine Anwendung keine Nachricht an einen Dienst senden oder an einen Dienst senden kann. Darüber hinaus können Dienste ein Benutzeroberflächenelement, z. B. ein Dialogfeld, nicht direkt anzeigen. Ein Dienst kann die WTSSendMessage-Funktion verwenden, um ein Dialogfeld in einer anderen Sitzung anzuzeigen.

Dienste