Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО от Тихомирова / Уч пособие по КР СПО 2009 Ред 15-11-09.doc
Скачиваний:
26
Добавлен:
08.06.2015
Размер:
842.24 Кб
Скачать

Приложение 2 Примеры описания реализации отдельных функций монитора и оформления разделов пояснительной записки

1. Вывод списка выполняющихся процессов в виде дерева.

Описание решения

Вывод списка выполняющихся процессов в виде дерева организован посредством сканирования запущенных в системе процессов. Для этой цели были использованы функции Win32API: CreateToolhelp32Snapshot, Process32First, Process32Next.

Результат выполнения функции:

Рисунок П2.1 –дерево процессов

2. Формирование протокола использования процессора

Описание решения

На основании данных, полученных при выполнении процедур пункта 1, строится протокол использования процессора. Принцип основывается на сравнении двух списков процессов – до вызова CreateToolHelp32SnapShot и после него. При первом вызове функции лист «ДО» пуст. Поэтому в протокол заносятся все запущенные в данный момент приложения. Время запуска берётся из массива данных, полученных с помощью функции CreateToolHelp32SnapShot. Время завершения процесса – время, в которое монитор не обнаружил искомый процесс работающим. Так как период опроса 1 секунда, то погрешность невелика.

Результат работы монитора процессов:

Рисунок П2.2 – протокол использования процессора

3. Протоколирование моментов времени внесения изменений в файловую систему с записью выполненных изменений и имён приложений, выполнивших изменения.

Описание решения

Следить за изменениями в реестре можно с помощью сохранения образа файловой системы, последующим сохранением другого образа и их сравнением. Но если речь идёт о жёстких дисках 40 и более ГБ, такой подход неверен, т.к. требует значительных системных ресурсов и занимает очень много времени.

Другой подход – использование функции Win32API FindFirstChangeNotification. Этот метод гораздо более быстр и экономичен, но, к сожалению, не даёт информации о приложении, сделавшем изменения.

Для решения задачи будем использовать драйвер REGMON, взятый с www.sysinternals.com. Для работы с драйвером используется модуль FileMon.pas, взятый с www.vingrad.ru . При старте программы создаётся объект типа TFileMon и объекту передаются основные параметры

- Путь к файлу драйвера

- Период опроса драйвера.

При возникновении события изменения ФС, начинает работу функция TForm1.filemonOperationBegin, которая заносит в таблицу протокола все необходимые данные.

Пользователю предоставляется возможность установки фильтров на процессы, присутствующие в протоколе и операции.

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

Описание решения

Для поиска одинаковых файлов, хранящихся в различных каталогах, используется рекурсивная функция SameRecurseFound. Для быстроты поиска создается дополнительный поток SameFindThread.

5. Принудительное завершение процесса, выбранного пользователем

Описание решения

Для завершения процесса выбранного пользователем необходимо использовать функцию OpenProcess, указывая ей уровень прав PROCESS_TERMINATE, и функцию TerminateProcess, передавая ей в качестве параметра дескриптор, возвращенный вызовом OpenProcess.

6. Конфигурирование монитора (период опроса, список показываемых процессов, список процессов, которые нельзя завершать). Сохранение конфигурации ini-файле

Описание решения

Вводятся имена процессов, которые нельзя завершать, устанавливается время опроса системы, конфигурация сохраняется в ini-файле.

7. Вывод информации о процессоре (получаемой с помощью команды CPUID)

Описание решения

Для решения используется модуль CpuId и классы из этого модуля TcpuData, TcpuRec. Для получения информации используется команда процессора CPUID, перед её вызовом инициализируется регистр EAX, числом, определяющим какую именно информацию нужно вернуть. Возвращаемая информация находится в регистрах EAX, EBX, ECX, EDX. Значения в этих регистрах просматриваются с использованием масок, и выводится в виде таблицы.

8. Вывод списка зарегистрированных в ОС расширений имен файлов и связанных с ними приложений (с путями)

Описание решения

Для получения списка необходимо просмотреть раздел реестра HKEY_CLASSES_ROOT\, и имена всех подкаталогов, которые начинаются с “.”, являются расширениями зарегистрированных расширений файлов. Для работы с реестром используются функции WinAPI: RegOpenKeyEx(), RegQueryInfoKey(), RegQueryValueEx(), RegEnumValue(). Для получения пути к приложению, необходимо найти, раздел, имя которого совпадает со значением параметра по умолчанию раздела “HKEY_CLASSES_ROOT\._имя_расширения_”. В найденном разделе найти “shell\open\command”, значение параметра по умолчанию данного раздела и будет путем к приложению, связанному с расширением.