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



МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования «Воронежский государственный технический университет»

Факультет     Экономики, Менеджмента и Информационных Технологий

Кафедра        Информационных Технологий и Автоматизированного

Проектирования в Строительстве

 

Курсовой проект

По дисциплине: Операционные системы

Тема: «Запуск приложения в качестве службы ОС Windows»

 

 

Выполнил студент: Юнусов. Ы

Группа: Б2311

Руководитель: СТ.ПР. Маковий К.А.

Защищен             «__» __________2019г.

С оценкой      _______   _________

                                                                                                                               (подпись)

 

 

Воронеж 2019

 

Содержание

ВВЕДЕНИЕ. 3

1 Изучение предметной области. 5

1.1 Понятие операционной системы.. 7

1.2 Операционная система Windows. 9

1.3 Управление службами. 11

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

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

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

2.3 Запуск службы в интерактивном режиме. 20

ЗАКЛЮЧЕНИЕ. 24

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ.. 25


ВВЕДЕНИЕ

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

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

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

Выбранная мной тема является актуальной для многих пользователей операционной системы Windows.

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

Запускать приложение в качестве службы мы будем с помощью программы NSSM (Non-Sucking Service Manager). NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 10.


 

Изучение предметной области

                                                                   

Microsoft Windows (англ. windows — окна) — семейство операционных систем корпорации Майкрософт (Microsoft), ориентированных на применение графического интерфейса при управлении. Изначально были представлены многофункциональными надстройками для MS-DOS.

Операционная система Windows обеспечивает значительные удобства для программистов и пользователей [2]. Большинство поль­зователей компьютеров используют Windows в своей работе. Ши­рочайшее распространение ОС Microsoft Windows сделало ее фак­тическим стандартом для компьютеров класса IBM.

К концу 2017 года Windows 10 не смогла опередить Windows 7 и стать самой популярной компьютерной операционной системой в мире. Об этом свидетельствуют данные сервиса NetMarketShare, который берет в рассмотрение данные 160 млн уникальных пользователей, просматривающих более 40 тыс. веб-ресурсов по всему миру.

По итогам декабря 2018 года Windows 10 оказалась установлена почти на 45% десктопов и ноутбуков в глобальном масштабе против 23% годом ранее. Доля Windows 7 хотя и сократилась за год - с 47,7% до 43,1%, но все равно осталась выше, чем у более свежей платформы [7].

 В ОС Windows гораздо лучше, чем в других операционных си­стемах:

- налажено взаимодействие между пользователем и компью­тером;

- большинство повседневных задач выполняются с меньшими, чем когда-либо, затратами времени;

- решена значительная часть проблем с распределением памя­ти;

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

- предусмотрена возможность присваивать папкам и файлам длинные и даже русские имена, что значительно облегчает работу пользователя;

- поддержка в Windows стандарта «plug-and-play» упрощает модернизацию оборудования;

- система ярлыков помогает быстро обращаться к часто исполь­зуемым файлам, программам и папкам;

- и пр.

Большая часть всего этого доступна без ущерба для производи­тельности ПК. А многие процессы, например печати, идут теперь гораздо быстрее благодаря 32-битному режиму и другим усовер­шенствованиям.

В отличие от DOS, Windows не только обеспечивает пользовате­лям удобный и наглядный интерфейс для операций с файлами, дис­ками и пр., но и предоставляет новые возможности для запускаемых в «родной» среде программ.

Одними из основных целей разработчиков Windows являются:

- создание документированного интерфейса;

- резкое снижение требований к подготовке пользователя;

- упрощение работы на компьютере.

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


Понятие операционной системы

Операционная система — комплекс управляющих и обрабатывающих программ. ОС принимает на себя сигналы-команды, которые посылают другие программы, и «переводит» их на понятный машине язык. ОС управляет всеми подключенными к компьютеру устройствами, обеспечи­вая доступ к ним другим программам. Наконец, третья задача операционной системы — обеспечить удобство работы с компьютером для челове­ка-пользователя

Получается, что каждая ОС состоит как минимум из трех обязательных частей [1].

- Первая — ядро, командный интерпретатор, «переводчик» с программного языка на «железный», язык машинных ко­дов.

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

- И, наконец, третья часть — удобная оболочка, с которой об­щается пользователь — интерфейс. Своего рода красивая обертка, в которую упаковано скучное и не интересное для пользователя ядро.

Сегодня графический интерфейс — неизменный атрибут любой операционной системы, будь то Windows, Linux или MacOS. Но операционные системы первых поколений имели не графический, а текстовый интерфейс, то есть команды компьютеру отдавались не щелчком мышки по рисунку-пик­тограмме, а с помощью введения команд с клавиатуры. Напри­мер, сегодня для запуска программы редактирования текстов Microsoft Word достаточно щелкнуть по значку этой програм­мы на Рабочем столе Windows.

Операционные системы делятся на однозадачные и многоза­дачные. Однозадачные операционные сис­темы (DOS) могут выполнять в одно и то же время не более одной задачи, а многозадачные ОС (Windows 98/ME/...) спо­собны одновременно управляться с несколькими процессами, деля между ними мощность компьютера. В принципе, число задач, которое может выполнять ваша ОС, не ограничено ни­чем, кроме мощности процессора и емкости оперативной па­мяти.

Еще один критерий — число пользователей ОС.

Многопользовательские и однопользовательские операционные системы: Компьютерные операционные системы этого типа позволяют нескольким пользователям получать доступ в компьютерную систему одновременно. Системы с разделением времени могут быть классифицированы как многопользовательские системы, поскольку они позволяют множественный доступ пользователей к компьютеру через разделение времени. Однопользовательские операционные системы в отличие от многопользовательских операционных систем могут использоваться только одним пользователем одновременно. Возможность создания несколько пользователей в операционной системе Windows, не делает ее многопользовательской системой. Скорее, только администратор сети является реальным пользователем. Но для Unixи подобных операционных систем, есть возможность сразу двум пользователям войти в систему в одно время, и эта возможность ОС делает ее многопользовательской операционной системой.

 Windows 95, Windows2000, MaxOS и Palm OS являются примерами однопользовательских операционных систем. Unix и OpenVMS примеры многопользовательских операционных систем.

Операционная система Windows

Операционная система — это главная программа компьютера. Без нее мы не смогли бы даже включить компьютер. Windows - это операционная система.

Когда мы включаем компьютер, то видим картинку и всякие значки, кнопки, окошки и прочее. Это и есть операционная система [3].

Операционных систем не так много. Практически на всех компьютерах установлена Windows, потому что она наиболее простая и удобная. Есть несколько версий этой системы — 95, 98, 2000, Me, NT, XP, Vista, Windows 7, Windows 8, Windows 10. Между собой они отличаются датой выпуска. Чем старее версия операционной системы, тем больше в ней недоработок. На данный момент самой новой версией является Windows 10.

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

Windows 10 доступна для обновления пользователям Windows 7 и 8, и установлена на компьютерах и планшетах. Сама операционная система и приложения для неё будут всё время обновляться на протяжение её жизненного цикла - который пока установлен на 10 лет.

Microsoft представляет Windows 10 как последнюю версию Windows в истории. Поэтому обновление до неё с Windows 7 и 8.1 в первый год после выпуска будет бесплатным.

Меню «Пуск», которое сочетает в себе черты Windows 7 и 8 с целью дать максимальное удобство работы. Цифровым ассистентом Cortana, предоставляющим нужную пользователю информацию. Новым набором напоминаний и обновлений, заглядывающих на экран и снова исчезающих (их можно прочитать позже в центре уведомлений). Новыми приложениями вроде Фотографии, которые знакомят нас с тем, как выглядят универсальные приложения. Режимом, который позволяет создавать виртуальные рабочие столы, упорядочивая открытые приложения по категориям и многим другим.


 

Управление службами

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

Для управления службами служит оснастка mmc «Службы». Чтобы ее найти, воспользуйтесь поиском по слову Службы в меню Пуск или на Панели управления. Другой способ запуска оснастки управления службами – ввести команду services. msc в строке поиска меню Пуск.

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

Окно свойств службы содержит несколько вкладок. На вкладке Общие вы можете узнать основные сведения о выбранной службе: имя, описание, исполняемый файл службы и ее текущее состояние. Для изменения состояния службы предназначены кнопки Запустить, Остановить, Приостановить и Продолжить.

Для управления службами в Windows существует графическая утилита - службы (services.msc), для ее запуска необходимо перейти:

Панель управления (Control Panel) --> Администрирование (Administrative Tools) --> Службы (Services) или в строке поиска меню Пуск (Start) ввести services.msc.

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

Различные варианты запуска служб.

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

2) Автоматически - служба будет запущена при старте операционной системы.

3) Вручную - служба запускается пользователем, приложениями или другими службами.

4) Отключена – службу нельзя запустить.

Примечание: Существует еще один вариант (обязательная служба) - автоматически запускается и пользователь не может остановить эту службу).

Службами window можно управлять не только используя графическую утилиту, но и из командной строки windows cmd. Для запуска переходим в пункт меню: Пуск --> Выполнить --> В строку вводим команду cmd.exe. Ниже приведу команды для управления службами [5].

· Остановка службы:

      sc stop [имя_службы]

· Запуск службы:

sc start [имя_службы]

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

sc delete [имя_службы]

· Запрос данных конфигурации для службы:

sc qc [имя_службы]

· Просмотр всех служб:

sc query

Особенностью служб является то, что они запускаются от имени пользователя LocalSystem - обладающего полными правами в системе.

Список всех служб расположен в ветке реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

 

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

 

В большинстве случаев службам запрещено взаимодействие с консолью или рабочим столом пользователей (как локальных, так и удалённых), однако для некоторых сервисов возможно исключение — взаимодействие с консолью (сессией с номером 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.


Дата добавления: 2021-07-19; просмотров: 317; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!