Реализация запуска приложения в качестве службы Windows — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Реализация запуска приложения в качестве службы Windows

2021-03-17 151
Реализация запуска приложения в качестве службы Windows 0.00 из 5.00 0 оценок
Заказать работу

 

В большинстве случаев службам запрещено взаимодействие с консолью или рабочим столом пользователей (как локальных, так и удалённых), однако для некоторых сервисов возможно исключение — взаимодействие с консолью (сессией с номером 0, в которой зарегистрирован пользователь локально или при запуске службы mstsc с ключом/console).
Существует четыре режима для сервисов:
* запрещён к запуску;
* ручной запуск (по запросу);
* автоматический запуск при загрузке компьютера;
* обязательный сервис (автоматический запуск и невозможность (для пользователя) остановить сервис).
     Windows предлагает программу Service Control Manager, с её помощью можно управлять созданием, удалением, запуском и остановкой служб. Приложение, имеющее статус сервиса, должно быть написано таким образом, чтобы оно могло принимать сообщения от Service Control Manager. Затем, одним или несколькими вызовами API, имя службы и другие атрибуты, такие, как его описание, регистрируются в Service Control Manager.


 

Создание службы Windows

Запуск приложения блокнот Windows в качестве службы на Windows 8.1.  осуществим с помощью программы NSSM.

Для создания службы с именем notepad необходимо запустить командную консоль (строку), перейти в папку с распакованным NSSM (для 64-разрядной Windows) и ввести команду nssm install notepad, которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы (рис 1).

 

Рисунок 1 — Окно запуска графического инсталлятора NSSM.

 

Также на этапе создания новой службы можно указать некоторые дополнительные параметры.

На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения (рис 2).  Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.

Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке [4]:

· На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;

· Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;

· Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;

· И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.

 

Рисунок 2 — Настройки выключения службы в NSSM.

 

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

По умолчанию при падении службы NSSM пытается перезапустить ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения (рис 3).

 

Рисунок 3 — Настройки выходя для службы NSSM

 

На вкладке «Input/Output (I/O)» можно задать перенаправление ввода\вывода приложения в указанный файл (рис 4).

 

Рисунок 5 — Вкладка I/O в NSSM

 

На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие (рис 6).

Рисунок 6 — Вкладка Environment в NSSM

 

Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой: nssm install notepad ″C:\Windows\system32\notepad.exe″


 

Управление службой Windows

После создания службы с помощью NSSM зайдем в оснастку Службы и найдем notepad. Как мы видим, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако стоит обратить внимание, что в качестве исполняемого файла указан nssm.exe (рис 7).

Рисунок 7 — Свойства службы

 

А если зайти в Диспетчер задач, то мы увидим следующее: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот (рис 8).

 

 

Рисунок 8 — Служба NSSM в диспетчере задач

 

Для удаления службы вводим команду nssm remove notepad в командной строке и подтверждаем ее удаление (рис 9).  

Рисунок 9 — Удаление службы в NSSM

 

Так же есть способ удаления службы без подтверждения, для этого необходимо ввести команду nssm remove notepad confirm.


Поделиться с друзьями:

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.