понедельник, 14 января 2013 г.

Управление службами через командную строку (консоль) Windows

Для работы со службами в Windows, существует утилита командной строки sc, также для управления можно использовать утилиту net. В данной стать я не буду пытаться описать все их параметры. Цель статьи - показать как со службами производить основные действия: установка, удаление, запуск, остановка.



Создание (установка, инсталляция) службы:

 

sc [computername] create [newservice] binpath= [путь к exe-файлу приложения] <параметры>
где:
 [computername] - имя компьютера на котором устанавливается служба (для локального этот параметр можно опустить)
[newservice] - имя вашей службы
[путь к exe-файлу приложения] - полный путь  к вашей программе. 
<параметры>  - дополнительные параметры. Необязательны. Т.к. в мой пост не ставит целью дать доскональное описание этой утилиты, о параметрах вы можете почитать например здесь.
Обратите внимание на пробел после binpath, он обязательный! 
Кстати, если в пути есть пробелы, то его следует заключить в кавычки " ". Если есть русские буквы, то, возможно потребуется решить проблемы с кодировкой (аналогично описаному здесь). В Windows 7, команду надо выполнять от имени администратора. И самое главное: не каждая программа может быть службой! Она должна быть написана соответствующим образом для этого!

 Удаление службы:

 

 sc [computername] delete [servicename]
 Параметры  аналогичны установке.

Запуск службы: 

 

с помощью утилиты net:
net start [servicename]
где [servicename] - имя службы

с помощью утилиты sc:
sc start [servicename]
где [servicename] - имя службы

Остановка службы: 

 

с помощью утилиты net:
net stop [servicename]
где [servicename] - имя службы

с помощью утилиты sc:
sc stop [servicename]
где [servicename] - имя службы

Разница в том, что эти 2 утилиты работают с разными именами: sc - с системным именем, а net с отображаемым (параметр displayname при создании с помощью cs)

Пример:

 

chcp 1251
sc create NewServ binpath= "d:\Мой сервис\Service.exe" displayname= MyServ

Данный bat-файл создаст службу NewServ с отображаемым именем "MyServ". Первая строчка указывает консоли кодировку, т.к. bat был написан в блокноте, который сохраняет файлы в ANSI (windows 1251), а по умолчанию консоль работает (оем 866)

sc start NewServ 

Данная команда запустит службу, обратите внимание что мы обращаемся к ней по системному имени. 

 net start MyServ 

Как уже говорилось выше, службу можно запустить и так, но использовать надо не системное, а отображаемое имя!
Аналогично остановка службы:

sc stop NewServ
или
net stop MyServ 

Удаление:

Комментариев нет:

Отправить комментарий