Изменения служб для Windows Vista
В модель служб были внесены значительные изменения для повышения производительности, надежности, безопасности, управления и администрирования служб.
В следующей таблице перечислены улучшения служб для Windows Vista.
Расширение | Описание |
---|---|
Отложенный автозапуск |
Отложенные службы автоматического запуска запускаются вскоре после запуска системы. Это повышает производительность запуска системы, обеспечивая при этом автоматический запуск для этих служб. Чтобы задать флаг отложенного автозапуска, вызовите функцию ChangeServiceConfig2 с SERVICE_CONFIG_DELAYED_AUTO_START_INFO. |
Обнаружение и восстановление сбоев |
Если служба завершается сбоем, диспетчер управления службами (SCM) может выполнить действие сбоя, например перезапустить службу в попытке восстановиться после этого сбоя. Чтобы настроить действие сбоя, вызовите ChangeServiceConfig2 с SERVICE_CONFIG_FAILURE_ACTIONS. |
Предварительные уведомления |
Служба может зарегистрироваться для получения уведомления SERVICE_CONTROL_PRESHUTDOWN в функции HandlerEx , прежде чем получать фактическое уведомление о завершении работы. Это обеспечивает службам с длительной процедурой завершения работы больше времени для корректного завершения работы. Чтобы задать значение времени ожидания, вызовите ChangeServiceConfig2 с SERVICE_CONFIG_PRESHUTDOWN_INFO. |
Ограниченный доступ к сети |
Идентификаторы безопасности служб можно использовать для ограничения доступа к портам, протоколам или направлению сетевого трафика. Чтобы ограничить доступ службы к сети, используйте интерфейс INetFwServiceRestriction . |
Запуск с минимальными привилегиями |
Службы могут выполняться под любой учетной записью, которая содержит необходимые привилегии (LocalService, NetworkService, LocalSystem, учетная запись домена или локальная учетная запись) и указывать необходимые привилегии путем вызова ChangeServiceConfig2 с SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO. SCM удаляет все привилегии, которые не требуются. |
Изоляция службы |
Служба может изолировать объекты, такие как файлы или разделы реестра, для исключительного использования, защищая их с помощью записи управления доступом, содержащей идентификатор безопасности службы. После назначения этого идентификатора безопасности службе владелец службы может изменить списки управления доступом объектов, чтобы предоставить доступ к идентификатору безопасности. Это позволяет службе получать доступ к определенным объектам без использования учетной записи с высоким уровнем привилегий или снижения безопасности объектов. Чтобы задать идентификатор безопасности службы, вызовите ChangeServiceConfig2 с SERVICE_CONFIG_SERVICE_SID_INFO. |
Уведомления об изменении состояния службы |
Службы можно зарегистрироваться для получения уведомлений о создании, удалении или изменении состояния службы с помощью функции NotifyServiceStatusChange . Это более эффективно, чем вызов функции QueryServiceStatusEx в цикле для опроса состояния. |
Изоляция сеанса 0 |
Службы всегда выполняются в сеансе 0. До Windows Vista первый пользователь для входа также был назначен сеансу 0. Теперь сеанс 0 зарезервирован исключительно для служб и других приложений, не связанных с интерактивным сеансом пользователя. (Первый пользователь для входа подключен к сеансу 1, второй пользователь для входа — к сеансу 2 и т. д.) Сеанс 0 не поддерживает процессы, взаимодействующие с пользователем. Это изменение означает, что служба не может публиковать или отправлять сообщения в приложение, а приложение не может отправлять или отправлять сообщение в службу. Кроме того, службы не могут напрямую отображать элемент пользовательского интерфейса, например диалоговое окно. Служба может использовать функцию WTSSendMessage для отображения диалогового окна в другом сеансе. |