Запуск и настройка службы Windows из командной строки

Запуск и настройка службы Windows из командной строки Командная строка

Несмотря на свой примитивный вид и скромные размеры, командная строка предоставляет множество вариаций на тему «А что если… произвести запуск службы из командной строки». Фактически, простому обывателю она понадобится в очень редких случаях, если совсем не понадобится, работа со службами (их запуск или остановка) и то реже (хотя тут скорее уместна команда net stop).

Но, есть множество талантливой молодежи, или просто проницательных людей, которые с огромным удовольствие захотят засунуть свой нос в вашу систему. Конечно, большинство простых обывателей не будет извращаться над собой используя Windows NT или Windows 2000, да и Семерка все чаще наступает на горло «простенькому» ХР, но, командная_строка в мире операционных систем, это все ровно, что таблица умножения в мире финансов.

В Панели управление/Администрирование находится оснастка Службы, которая позволяет управлять рядом сервисов. Двойной щелчок по любой из них позволяет просмотреть ряд параметров:

настройка и запуск службы из командной строки

Вкладка Общие показывает состояние, тип запуска, описание, исполняемый файл и другую информацию. Использование CMD позволяет получить аналогичную информацию, а также управлять состоянием и запуском служб, используя командную строку:

Sc start Имя_Службы – производится запуск службы из командной строки

Sc pause Имя_Службы – приостановка сервиса

Sc continue Имя_Службы – восстановление работы приостановленного сервиса

Sc stop Имя_Службы – полная остановка

Эти команды можно применять и на удаленных машинах. Например, что бы запустить УдаленныйРеестр на машине с адресом 192.168.1.6., надо прописать (вместо IP можно и имя машины прописать, например Mailer):

Sc 192.168.1.6 start RemoteRegistry

Хотя, запустить службу из командной строки можно и при использовании утилиту net start, или net stop соответственно (net stop RemoteRegistry)

Что бы настроить тип запуска применяется команда sc config (хотя ее возможности этим не ограничиваются). Синтаксис следующий:

Sc config ИмяСлужбы start= флаг

Флаг может принимать три значения:

  • Auto – автоматический запуск при старте системы
  • Demand – ручной запуск
  • Disable – отключение
Sc 192.168.1.6 config RemoteRegistry start= disable

тут мы отключили RemoteRegistry на удаленной машине. Стоит помнить, что отключение сервиса его не останавливает, после перезагрузки он может вновь запустится.

настройка и запуск службы из командной строки

На вкладке Вход в систему видно, что сервис можно запускать или от имени системной учетной записи, или от имени любой другой учетной записи. Так, что бы запустить службу из командной строки под тои или иной учетной записью, используется синтаксис:

Sc config ИмяCлужбы obj= ИмяУчетнойЗаписи

В данном примере УдаленныйРеестр грузится под ЛокальнойСлужбой (NT AUTHORITYLocalService), а можно и под системной учетной записью (LocalSystem), но лучше этого не делать:

Sc config RemoteRegistry obj= LocalSystem

Если использовать флаг type= interact, то это укажет, что сервис может взаимодействовать с рабочим столом Windows:

Sc config RemoteRegistry obj= LocalSystem type= interact type= own

тут флаг type= own говорит, что cлужбa выполняется в собственном процессе, если же работа происходит в общем процессе, то применятся флаг type= share. Например:

Sc config ИмяCлужбы obj = LocalSystem type= interact type= share

Используя команду sc qc ИмяСлужбы можно детально просмотреть информацию о ней, в том числе и тип запуска, например:

TYPE : 20 WIN32_SHARE_PROCESS (общий процесс)
или
TYPE : 20 WIN32_OWN_PROCESS (собственный процесс)

Может возникнуть необходимость сделать запуск определенной службы, используя командную строку, не от имени системы, а от имени пользователя, в таком случае надо указывать имя учетной записи и пароль, например:

sс config w3svcobj = User password=UserPass — тут w3svc настроена на запуск от имени пользователя User с паролем UserPass. Общий же синтаксис такой:

sс config ИмяCлужбы obj = [Домен]Пользователь password= пароль — тут Домен — имя домена, где находится учетная запись (не является обязательным). В случае, если системная cлужбa была прежде сконфигурирована под локальную систему, то при перенастройке под учетную запись домена надо использовать флаг type= own:

Sc config ИмяСлужбы obj =[Домен]Пользователь 
password= пароль type= own

Операционная система Windows содержит множество лазеек, которые позволяют в нее проникнуть (в том числе и сервер сценариев Windows Script Host), обходя стандартные правила. Не последнюю роль тут играют и системные службы. Например, утилита PsExec позволяет войти в удаленную систему или же запустить приложение от имени Локальной Системы. В процессе создается служба которая работает на обеих машина, она то и оперирует всем процессом связи. Однако, гордые обладатели Семерки, или даже ХР (если были установлены нужные обновления), могут сильно разочароваться. Хотя запуск службы psexecsvc можно произвести и непосредственно из командной строки, система ее просто игнорирует (или запрещает выполнять ее функции). Конечно, если есть голова, то можно создать аналог Psexec (тем более, что алгоритм работы известен), авось прокатит, но, если бы все было так, как в книге пишут…

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий