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

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

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

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

2021-03-17 152
Реализация запуска приложения в качестве службы 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.


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

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



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

0.012 с.