Разработка службы Windows "Контроль приложений" - Курсовая работа

бесплатно 0
4.5 81
Разработка на языке C службы, осуществляющей контроль набора выполняющихся приложений. Проектирование, кодирование, отладка, тестирование и сопровождение службы Windows. Взаимодействие службы и приложения. Интерактивность разрабатываемой службы.


Аннотация к работе
Разработка службы Windows: «Контроль приложений», осуществляющей контроль набора выполняющихся приложений и, возможно, управление ими. Кроме разработки службы, необходимо разработать приложение, которое будет осуществлять управление этой службой. Служба - это Windows-приложение, содержащая дополнительную инфраструктуру, которая позволяет SERVICECONTROLMANAGER (SCM) - компоненту, работающему на всех windows-машинах, - управлять этим приложением [2].Согласно заданию необходимо создать приложение, осуществляющие контроль приложений, но в задании не указаны конкретные требования по реализации данного приложения. Следовательно, разработчик данного программного продукта сам решает какой язык программирования выбрать и как будет выглядеть готовый программный продукт (его функции). Для реализации данного проекта был выбран язык С , так как в наличии имеется среда разработки, и соответствующие знания данного языка. Интерактивные службы - службы, осуществляющие взаимодействие с пользователем. В задании указано, что помимо самой службы необходимо разработать приложение, которое будет осуществлять управление этой службой.Определим функционал разрабатываемого сервиса: 1) создание лог файла, в который будут заноситься сведенья о запушенных процессах. Вариант первый: стартует служба, начинает что-то делать, время от времени уведомляя систему о своем состоянии, потом служба останавливается. Для формирования лога необходимо создать структуру, в полях которой будут храниться данные о процессе (время создания/завершения, идентификатор (pid), имя процесса, указатель процесса), передаваемую в качестве параметра в функцию записи в лог файл. 2) сверяет со списком запущенных процессов, полученным ранее, если существуют процессы, отсутствующие в данном списке, затем происходит заполнение структуры данных о процессе и добавление в этот список и вызов функции формирования записи в лог файле о запуске процесса; 3) поиск в списке, полученном во втором пункте, процессов, которые отсутствуют в списке из первого пункта и формирование записи о завершении данного процесса, удалении его из списка.Для управления сервисами в Windows существует Service Control Manager (SCM). Для корректного управления службой при ее модификации или смене состояний необходимо каждый раз сначала получать указатель SCM и лишь затем указатель самой службы. Меню данного приложения можно реализовать в виде бесконечного цикла while c использованием условной конструкции switch предусматривающая возможность выхода из данного цикла.Основной целью данного этапа является реализация программного продукта.Создадим потомка данного класса TSPARKYTHREAD. class TSPARKYTHREAD: public TTHREAD {private: protected: void __fastcall Execute();/*главным методом объекта TTHREAD. Был выбран первый вариант, т.к для перечисления процессов библиотека PSAPI предоставляет функцию ENUMPROCESSES, которая возвращает массив идентификаторов запущенных процессов, и в отличии от других методов не извлекается избыточная информация о процессах, а необходимая информация извлекается с использованием указателей процессов. Для хранения информации о процессах создадим структуру PROCESINFO следующего вида: struct PROCESINFO{ Из всех возможных были выбраны следующие параметры: 1) PROCESS_QUERY_INFORMATION - необходим, чтобы извлечь некоторую информацию о процессе; 2) PROCESS_VM_READ - необходим, чтобы читать память в процессе, используя функцию READPROCESSMEMORY.Установка службы осуществляется вызовом функции CREATESERVICE, которая создает объект сервиса и добавляет его в базу данных менеджера управления сервисами (SCM). LPCTSTR LPSERVICENAME, /* Указатель на строку (завершающуюся нулем), содержащую имя создаваемого сервиса. LPCTSTR LPDISPLAYNAME, /* Указатель на строку (завершающуюся нулем), содержащую имя, которое будет отображаться в пользовательских приложениях */ LPCTSTR LPLOADORDERGROUP, /* Указатель на строку (заканчивающуюся нулем), которая содержит имя группы, членом которой является сервис. LPCTSTR LPDEPENDENCIES, /* Указатель на массив (завершающийся двумя нулями) имен (разделенных нулями) сервисов или групп сервисов, которые система должна запустить до запуска этого сервиса.Перед установкой службы приложение просит пользователя ввести ключи, если пользователь ввел их корректно, тогда происходит процесс установки службы, следующим действием является передача службе этих ключей. Так как используется vcl служба, то передать напрямую параметры не удастся, так основной поток службы скрыт в классе TSERVICE. SCM хранит базу данных служб в ключе реестра: HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\Services Удобно все параметры службы хранить в ключе: HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\Services\Имя-Службы(свойство Name)\Parameters. Именно его значение мы и будем записывать в реестр в ветку: HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\Services\Имя-Службы(свойство Name)\mode.Суть его в том, что проверить функциональность основного кода службы можно и в приложении, если ошибок не обнаружено, то пер

План
Содержание

Задание на выполнение

Введение

1. Анализ

2. Проектирование

3. Кодирование и отладка

3.1 Служба

3.2 Приложение

3.3 Взаимодействие службы и приложения

4. Тестирование

5. Сопровождение

Заключение

Список литературы
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?