Как установить службу в операционной системе Windows

Важной частью операционных систем Windows являются службы Windows – Windows Service. Службы – это приложения, которые запускаются вместе с операционной системой и выполняются на фоне вне зависимости от пользователя или статуса входа в систему. Создание службы возможно и пользователями.

Главными инструментами для выполнения этих задач могут являться: командная строка Windows, Microsoft Powershell или же утилиты INSTSRV.EXE и SRVANY.EXE

sc create – командная строка и создание службы

Командная строка, запущенная в режиме администратора, позволяет создать свою службу с помощью утилиты sc.exe (service control). Ниже приведён наиболее распространённый формат команды консоли Windows, позволяющий использовать утилиту для создания службы:

sc create название binPath= ”путьDisplayName= ”отображаемоеимя” type= тип start= режим запуска

Пробел после “=” необходим для корректного завершения операции. Обязательными параметрами для создания службы являются только название, binPath и DisplayName.

Разберём указанную команду. Название– это внутреннее название службы. binPath должен быть приравнен к исполняемому файлу, на котором базируется работа службы. DisplayName – это имя, отображающееся в списке служб.

type= тип непосредственно обозначает тип создаваемой службы. Существуют следующие допустимые значения данного параметра:

  • own – определяет службу, которая занимает собственный индивидуальный процесс. Стандартное значение параметра;
  • share – определяет службу, которая запускается в совместном процессе и делит исполняемый файл с другими службами;
  • kernel – определяет драйверы (например, устройств);
  • filesys – определяет драйвер файловой системы;
  • rec – определяет драйвер распознания файловой системы;
  • interact – устаревший тип, позволяющий создавать «интерактивные» службы – то есть такие, которые допускают взаимодействие с пользователем, ввод с его стороны и т.д. Такие службы должны иметь два типа одновременно – interact и own/share. Например, в команде нужно будет написать type= own type= interact.

Start= режим_запуска отвечает за то, когда запускается работа службы. Среди режимов запуска:

  • boot – предназначен для драйверов устройств, загружающихся загрузчиком ОС;
  • system – предназначен для драйверов устройств, которые запускаются вместе с ядром ОС;
  • auto – служба самостоятельно загружается при каждой включении компьютера и запускается даже если никто не заходит в систему;
  • demand – служба запускается вручную. Стандартное значение параметра;
  • delayed-auto – служба запускается только после запуска остальных служб

Существуют и более опциональные параметры для создания служб, такие как error,  group, depend, password и другие. Их описание следует искать в официальной документации Microsoft.

После успешного использования команды, в консоли выведется надпись об успешном создании службы, и если она должна быть запущенной, то она появится в списке служб (в окне команды «выполнить» ввести services.msc)

Как удалить

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

sc delete servicename

где servicename – название службы, заданное вами после ключевых слов sc create.

Использование PowerShell

Сильный инструмент для выполнения поставленной задачи предоставляет и Microsoft PowerShell в режиме администратора. В данном случае главной командой представляется New-Service. В минимальной форме она также требует лишь название сервиса и путь к исполняемому файлу. Более подробная версия команды рассматривается ниже.

New-Service -Name название BinaryPathName путь DisplayName отображаемоеимя Description описание” —StartupType “режим

BinaryPathName – аналог binPath в sc create, DisplayName аналогично соответствующему параметру, Description добавляет службе описание в списке служб. StartupType близок по смыслу к start: параметр auto переименован в Automatic (здесь Automatic выставлен по умолчанию), delayed-auto – в AutomaticDelayedStart, demand – в manual. Добавлено значение disabled для полностью отключённых служб, невозможных к запуску.

Удаление средствами PowerShell

В противовес команде New-Service для создания службы, можно использовать команду Remove-Service для её удаления. Remove-Service -Name servicename, где servicename – имя службы.

Как сделать любой исполняемый файл службой

Не каждый исполняемый exe-файл может выполнять роль службы ОС Windows. Настоящие службы особым образом взаимодействуют с операционной системой, отвечая на её специфичные запросы. Отсутствие ответов на эти запросы заставляет Windows думать, что служба работает некорректно. В прошлом существовали специальные программы, позволявшие использовать любой файл как службу.

В настоящий момент существует два основных решения данной проблемы. Так, многие люди используют функционал программы «Планировщик задач», поставляющейся в составе ОС Windows начиная с версии XP. Она не позволяет создать полноценные службы, но позволяет настроить срабатывание программы в определённые моменты работы системы. В случае же, если необходимо использование особенностей именно служб, используются утилиты родом из Windows Server 2003 Resource Kit Tools – INSTSRV.EXE и SRVANY.EXE в сочетании с редактором реестра.

Для работы с ними, необходимо скачать инструментарий упомянутого программного пакета и переместить данные файлы в папку Windows на системном диске. Далее, в командной строке с правами администратора используется команда следующего вида:

Путь_к_instsrv.exe названиесервиса путь_к_srvany.exe

Затем, в редакторе реестра в разделе HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/ необходимо выбрать созданное приложение. После нажатия ПКМ создаём раздел с именем «Parameters», нажимаем ПКМ по получившемуся разделу и добавляем строковый параметр Application, значением которого является путь до exe-шника, который необходимо использовать в качестве службы.

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

Ссылка на основную публикацию