close

Вход

Забыли?

вход по аккаунту

?

4. РЕАЛИЗАЦИЯ ПРИЛОЖЕНИЯ РЕЗУЛЬТАТЫ ИСПЫТАНИЙ

код для вставкиСкачать
 4 РЕАЛИЗАЦИЯ ПРИЛОЖЕНИЯ И РЕЗУЛЬТАТЫ ИСПЫТАНИЙ
4.1 Подключаемые библиотеки
Для работы нам понадобятся следующие пространства имен:
1) System - содержит фундаментальные и базовые классы, которые определяют распространенные типы значений и ссылочные типы данных, события и обработчики событий, интерфейсы, атрибуты и исключения обработки. Содержит также классы, обеспечивающие поддержку преобразования типов данных, операций с параметрами методов, математических операций, удаленного и локального вызова программ, управления средой приложений и контроля управляемых и неуправляемых приложений.
2) System.ComponentModel - содержит классы, реализующие поведение компонентов и элементов управления во время проектирования и выполнения. Данное пространство имен включает базовые классы и интерфейсы, предназначенные для реализации преобразователей атрибутов и типов, для привязки к источникам данных и для лицензирования компонентов.
3) System.IO - содержит типы, позволяющие осуществлять чтение и запись в файлы и потоки данных, а также типы для базовой поддержки файлов и папок.
4) System.Windows.Forms - содержит классы для создания приложений Windows, которые позволяют наиболее эффективно использовать расширенные возможности пользовательского интерфейса, доступные в операционной системе Microsoft Windows.
5) Microsoft.Win32 - предоставляет два типа классов: те, которые обрабатывают события, вызванные операционной системой, и те, которые управляют системным реестром.
6) System.Threading - содержит классы и интерфейсы, которые дают возможность программировать в многопоточном режиме. В дополнение к классам, чтобы синхронизировать действия потока и доступ к данным (Mutex, Monitor, Interlocked, AutoResetEvent и т д) данное пространство имен включает класс ThreadPool, который позволяет использовать кластера система- предоставленных потоков и класс Timer, который выполняет обратные вызовы на потоках из пула потоков.
7) System.Runtime.InteropServices - предоставляет широкий спектр членов, поддерживающих COM-взаимодействие и службы вызова неуправляемого кода.
8) AdvAPI32.dll - 32-разрядный API для современных версий Windows, содержит функции для работы с реестром.
4.2 Реализация программы
В нашей программе будем использовать следующие функции:
1) Функция, которая реализует поток, отслеживающий обращения к реестру.
private void ThreadLoop()
В данной функции происходит открытие ветки/ключа реестра, и если при этом произошла ошибка, будет сгенерировано исключение. Затем в цикле для мониторинга используется WINAPI функция RegNotifyChangeKeyValue, которая оповещает о происходящих изменениях в заданной ветке/ключе реестра. При возникновении сигнала вызывается событие OnRegChanged. В завершении производится закрытие ключа реестра, над которым происходило наблюдение.
2) Событие, которое происходит когда ветка/ключ реестра были изменены.
protected virtual void OnRegChanged()
3) Событие, которое происходит при возникновении ошибки.
protected virtual void OnError(Exception e)
4) Функция которая запускает фоновой поток мониторинга реестра.
public void Start()
5) Функция которая останавливает фоновой поток мониторинга реестра.
public void Stop()
6) Функция, которая производит запись событий в журнал аудита.
private void WriteLog(string s)
В данную функцию в качестве формальных параметров предаётся строка, которую необходимо записать в текстовый файл. Затем текстовый файл открывается в режиме добавления и в него производится запись новой строки. После окончания записи файловый поток закрывается.
4.3. Тестирование программы
Запустим программу и попробуем отследить обращения к какой-нибудь ветке реестра, например "HKEY_CURRENT_USER\Printers".
Рисунок 4.1 - Подготовка к началу мониторинга. Нажмем "старт" и попробуем произвести какие-нибудь изменения в данной ветке, например, добавим новый параметр.
Рисунок 4.2 - Добавление в отслеживаемую ветку нового ключа. Как видно из следующего рисунка, программа моментально выдала сообщение об изменении реестра в данной ветке.
Рисунок 4.3 - Реестр был изменен.
Изменим значение параметра, чтобы узнать отследит наша программа ли это событие.
Рисунок 4.4 - Изменение значения параметра.
Из рисунка видно, что программа и на этот раз перехватила изменения в реестре.
Рисунок 4.5 - Программа отреагировала на изменение значения ключа.
Продолжаем тестирование. На этот раз удалим ключ из данной ветки.
Рисунок 4.6 - Удаление ключа.
Перехват обращения к заданному параметру был выполнен успешно, и программа вывела сообщение.
Рисунок 4.7 - Сообщение "Реестр был изменен".
Проверим журнал аудита (текстовый файл), в который должны были записываться все события.
Рисунок 4.8 - Лог-файл созданный в процессе работы программы.
Попытаемся мониторить ключ которого не существует. Как видно из рисунка программа выдала соответствующее сообщение.
Рисунок 4.9 - Сообщение об ошибке.
Исходя из результатов тестирования, можно сделать вывод, что задача по мониторингу обращений к реестру была успешно выполнена.
Документ
Категория
Разное
Просмотров
51
Размер файла
396 Кб
Теги
результаты, реализации, приложение, испытаний
1/--страниц
Пожаловаться на содержимое документа