Как в Windows 10 создать собственную системную службу

Открыв Диспетчер задач и переключившись на вкладку «Подробности», можно обнаружить ряд процессов, которые явно не имеют никакого отношения к запущенным пользователем прикладным программам. Многие из таких процессов принадлежат службам — особым программным модулям, стартующим вместе с Windows, работающим в скрытом режиме и выполняющим подчас очень важную работу. Но тут у многих может возникнуть вопрос.

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

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

Это хороший вопрос, и на него можно ответить утвердительно, однако понятие «автозагрузка» часто употребляется в широком смысле слова без различия, что именно и как именно загружается. Если вы имеете общие представления о работе процессов Linux, то наверняка знакомы с такой сущностью как демон. Это процесс, но процесс несвязанный с каким-либо конкретным пользователем и работающий как-бы автономно. Службы в Windows очень похожи на этих самых демонов, они тоже независимы от пользователей. Когда вы добавляете в автозагрузку программу, пусть даже не имеющую графического интерфейса, она запускается в рабочем окружении пользователя при входе последнего в свою учетную запись, тогда как службы запускаются еще до ввода пользователем логина и пароля и напрямую с ним не взаимодействуют.

Теперь, когда вы поняли основную разницу между добавленными в автозагрузку приложениями и службами, мы научимся создавать такие службы сами и использовать их для разных целей, например, для мониторинга портов или еще чего-нибудь; главное — это найти программу или скрипт, который будет выполнять необходимое вам действие.

А еще вам понадобиться бесплатный инструмент Non-Sucking Service Manager, который «превратит» обычный процесс в службу. Название программы не очень благозвучное даже для носителя английского языка, но это не так уже и важно. Главное, что она работает. Скачать ее можно с сайта разработчика nssm.cc/download.

Сайт NSSM

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

Скачать скрипт можно по ссылке yadi.sk/d/3pJmyAvNB8poIQ.

Вот так он выглядит «изнутри».

Скрипт

Сначала проверим, работает ли сам скрипт. Кликаем по нему ПКМ и выбираем «Выполнить с помощью PowerShell».

Выполнить с помощью PowerShell

Если в консоли будет выведен запрос на разрешение выполнения скриптов, вводим Y и нажимаем ввод.

Запрос на разрешение

Если скрипт заработал, вы увидите в консоли текст «Транскрибирование запущенно, выходной файл… и его адрес».

Транскрибирование запущенно

В результате в каталоге со скриптом у вас появится каталог «Logs» с файлом отчета в простом текстовом формате.

Logs

Создаем службу

Теперь переходим к работе с Non-Sucking Service Manager. Открыв от имени администратора командную строку и перейдя в расположение исполняемого файла утилиты nssm.exe соответствующей разрядности, выполняем команду nssm install logCPUAvg, где logCPUAvg — имя новой службы.

В открывшемся окошке установщика вы увидите три поля:

  • Path – в нем указываем путь к обработчику, то есть PowerShell, файл консоли находится в папке C:\Windows\System32\PowerShell.
  • Startup directory – папка с исполняемым файлом обработчика, поле заполнится автоматически.
  • Arguments – в этом поле прописываем команду -ExecutionPolicy Bypass -NoProfile -File "полный-путь-к-скрипту".

Аргумент ExecutionPolicy нужен для предоставления скрипту временных прав на запуск. Если в качестве службы вы устанавливаете какую-нибудь утилиту, то поле может быть оставлено как пустым, так и с указанным в нём аргументом данной конкретной утилиты.

Всё готово, жмем «Install service», чтобы установить службу.

Non-Sucking Service Manager

Non-Sucking Service Manager

Окно установщика содержит и другие вкладки, дополнительные. Например, на вкладке «Details» можно указать описание и отображаемое в оснастке управления службами имя службы, которое будет отличаться от указанного в команде nssm install, а на вкладке «Log on» выбрать учетную запись, от имени которой станет работать служба.

По умолчанию создаваемая служба работает от имени самой системы, как и положено. Открыв оснастку управления службами, вы увидите в списке и свою службу. Она будет иметь тип запуска «Автоматически», но находиться в остановленном состоянии. Запустится она при следующей загрузке, либо вы сами можете ее запустить.

Автоматически

То, что скрипт заработал, станет видно из того, что в месте его расположения появится папка «Logs», при этом вывод самой консоли будет скрыт. И вот что интересно. Запустив службу, мы вышли из учетной записи в 12.46, а затем вошли в нее в 12.50, но служба продолжала работать даже в наше отсутствие в системе! Это еще раз говорит о том, что системная служба не связана с пользовательским окружением.

Лог службы

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

Помимо того, что вы можете остановить службу в оснастке, переведя ее в статус «Отключена», вы властны ее полностью удалить с помощью той же NSSM. Для этого в командной строке выполняем команду nssm remove имя-службы.

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

И подтверждаем действие нажатием кнопки «Да» в миниатюрном диалоговом окошке.

Подтверждаем действие

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

uTaskManager — тот же Диспетчер задач, только специально для универсальной платформы

За время существования Windows был создан не один аналог Диспетчера задач, но все его альтернативы Читать далее

Не удается установить флажок отложенного автозапуска службы. Ошибка 87 — причина ошибки и обходное решение в Windows 10

Помимо удаления из автозагрузки лишних приложений, одним из способов ускорить загрузку Windows является изменение приоритета Читать далее

Не запущена служба политики диагностики — почему в Windows 10 не работает «Устранение неполадок»

Для устранения типичных неполадок в Windows 10 предусмотрен набор утилит, который так и называется — Читать далее

Windows Service Auditor — инструмент аудита и отслеживания служб в Windows

В Windows 10 имеется порядка 200 фоновых служб, из которых примерно половина находятся в активном Читать далее

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...

Рекомендуемые публикации:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *