Partager via


Windows 7: Сервисы

С момента своего появления сервисы в Windows «умели» стартовать при загрузке операционной системы. Такой подход вполне устраивал разработчиков – необходимая приложению функциональность всегда под рукой. Однако с точки зрения эффективного использования ресурсов идея далека от идеальной – из нескольких десятков сервисов стартующих при загрузке типичного современного компьютера под управлением Windows Vista лишь небольшая часть критична собственно для его загрузки. При этом остальные сервисы хотя и необходимы для своих сценариев, но совершенно не нужны в момент старта операционной системы.

Более того ,загруженные и неиспользуемые в данный момент времени сервисы потребляют оперативную память, утилизируют процессор, создают потенциальную возможность для хакерской атаки.

Чтобы избежать этих проблем разработчики Windows 7 внесли небольшое, но весьма важное усовершенствование в схему загрузки сервисов. Теперь при установке сервиса он может зарегистрировать себя не как классический Auto_Start, а как сервис стартующий по событию. При этом сервис должен указать событие по которому ему нужно быть запущенным. Таким событием может быть например подключение USB устройства, смена IP адреса, присоединение компьютера к домену.

Windows 7 не содержит графического интерфейса, который позволяет сконфигурировать сервис, как стартующий по событию. Однако это можно сделать при помощи утилиты sc командной строки. Например, вот так можно сконфигурировать старт сервиса при получении компьютером IP адреса:

sc triggerinfo <SERVICENAME> start/networkon

Безусловно, еще бОльшую функциональность дает использование кода. Пример конфигурации и создания сервиса на C++ стартующего по событию можно посмотреть вот тут: http://blogs.microsoft.co.il/blogs/sasha/archive/2009/02/25/windows-7-trigger-start-services.aspx

Подробнее о Trigger Start Services: http://msdn.microsoft.com/en-us/library/dd405513%28VS.85%29.aspx

АШ