Изменения служб для 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 для отображения диалогового окна в другом сеансе.

Службы