В данной статье мы завершаем разговор об SC (sc.exe), инструменте командной строки, который обеспечивает всеобъемлющий контроль работы служб. В прошлых публикациях речь шла о том, как с помощью SC запускать и останавливать службы, создавать новые и удалять существующие службы, а также отслеживать зависимости между ними. Но возможности работы со службами этим не ограничиваются. Например, я часто изменяю режим начальной загрузки службы: автоматический или ручной запуск, включена или выключена и т.д. Режимом начальной загрузки и многими другими параметрами можно управлять с помощью команды SC Config.
Принцип действия команды SC Config
Возможности команды SC Config в основном такие же, как у команды SC Create, о которой было рассказано в прошлых статьях. Типовой синтаксис команды выглядит так:
sc config
Пример, который наглядно показывает эффективность команды: с тех пор как в пакете Windows Server 2003 SP1 и Windows XP SP2 служба Messenger была отключена, я довольно часто получаю по электронной почте сообщения от пользователей, которые уверены в необходимости этой службы. Некоторым пользователям кажется очень удобной команда Net Send. Чтобы настроить службу Messenger для автоматического запуска при начальной загрузке компьютера, следует набрать команду:
sc config messenger option= auto
Особенность синтаксиса SC — необходимость в пробелах между знаком равенства и значением параметра. Другие возможные параметры: boot, system, demand (вручную) и disabled.
Кстати, в Windows Vista имеется еще один параметр — delayed-auto, который отображает режим задержанного старта службы операционной системы. Реализация служб с задержанным запуском отражает решение компании Microsoft, предусматривающее, что многие службы должны запускаться автоматически, но не обязательно немедленно. Для Microsoft важно, чтобы операционная система Vista была запущена и готова к работе как можно быстрее, а операционные системы XP и Windows 2000 загружаются медленно отчасти потому, что приходится ждать автозапуска служб, которые всегда запускаются безотлагательно.
Другие полезные параметры команды SC Config: password, error, depend и, возможно, obj. Я уже рассказывал о параметрах obj и password. В одной из предыдущих статей речь шла об их использовании для создания новой службы: obj= позволяет указать учетную запись для запуска службы с применением команды SC Config, так же как параметр obj= задает учетную запись службы в команде SC Create. Учетная запись службы меняется нечасто, но иногда приходится менять пароли учетных записей, и для этого можно задействовать параметр password=. Если у службы с именем myservice есть учетная запись, пароль которой должен быть изменен на swordfish, сообщить об этом операционной системе можно следующим образом:
sc config myservice password= swordfish
Параметр error= можно применить, чтобы управлять работой Windows в случае сбоя службы. Создавая новую службу, можно настроить операционную систему на переход в один из четырех режимов в случае отказа службы: ignore — сбой просто регистрируется в журнале событий; normal — выдача сообщения, подтверждающего отказ службы, но работа системы продолжается; severe — система перезагружается в последней исправной конфигурации и предпринимается попытка продолжить работу; critical — система перезагружается, служба запускается повторно и в случае нового отказа возникает «голубой экран». Можно настроить Windows так, чтобы операционная система не функционировала, если не работает служба myservice (естественно, к этой мере следует прибегать лишь в крайних случаях):
sc config myservice error= critical
У утилиты SC Config есть еще одна особенность, которая заслуживает внимания. В трех предыдущих статьях отмечалось, что в тех случаях, когда для команды можно указать более одной пары параметр/значение, пары разделяются косой чертой. В качестве примера приводился метод с параметром depend=. То же самое относится и к синтаксису команды SC в Vista. Однако в команде SC Config несколько параметров разделяются просто пробелами. Это типично для сценариев, но плохо сочетается с остальными синтаксическими правилами команды SC. Например, объединить две последние команды в одну можно следующим образом:
sc config myservice password= swordfish error= critical
Перспективы
Требуется управлять службой из командной линии, чтобы использовать командный файл? Как задействовать текстовый интерфейс для дистанционной настройки системы через канал связи с малой пропускной способностью? Возможно, для решения этих задач достаточно освоить командную строку, чтобы работать с будущим продуктом Server Core, управление функционированием которого осуществляется исключительно из командной строки. Какими бы ни были потребности пользователя, команда SC пригодится всегда.
Марк Минаси - Старший редактор Windows IT Pro, имеет звание MCSE. mark@minasi.com