Поделиться через


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

службы