Разработка приложения для чтения локального и удаленного реестра Windows
Курсовая работа, 12 Января 2012, автор: пользователь скрыл имя
Описание работы
Реестр Windows – это иерархическая централизованная база данных, используемая в ОС Microsoft Windows 98, Windows CE, Windows NT и Windows 2000 для хранения сведений, необходимых для настройки операционной системы для работы с пользователями, программными продуктами и устройствами.
В реестре хранятся данные, которые необходимы для правильного функционирования Windows.
Содержание
ВВЕДЕНИЕ 3
2. Выбор и обоснование средств информационной системы 4
2.1. Требования к системе. UML диаграммы 5
2.2. Состав технических устройств, система интерфейсов 10
2.3. Способы взаимодействия пользователя с системой, организация вычислительных процессов 11
2.4. Состав информационного и программного обеспечения 12
2.4.1. Структура и форматы данных 12
2.4.2. Описание методов приложения 15
3. Заключение 16
3.1. Достоинства и недостатки разработанной информационной системы 16
3.2. Пути совершенствования разработанного программного продукта 17
3.3. Рекомендации пользователю 17
4. Используемая литература 18
Приложение. Листинг программы 19
Работа содержит 1 файл
Курсовая работа по ИСИС Смолин А.В. гр.4509.docx
— 652.20 Кб (Скачать)Класс QTcpSocket предоставляет интерфейс для TCP.
Перед передачей
данных должно быть установлено TCP-соединение
с удаленным узлом и портом.
Как только связь была установлена,
IP-адрес и порт соединения доступны
через QTcpSocket::peerAddress(
QTcpSocket работает асинхронно
и посылает сигналы, сообщающие об изменении
статуса и ошибках. Что зависит от цикла
событий для обнаружения поступающих
данных и автоматического сброса отправляемых.
Записывать данные в сокет можно используя QTcpSocket::write(), а читать данные используя QTcpSocket::read(). QTcpSocket
Так как QTcpSocket унаследован от QIODevice, можно использовать
его с QTextStream и QDataStream. При чтении из QTcpSocket нужно удостовериться,
что доступно достаточно данных, это можно
сделать с помощью вызова QTcpSocket::
Если нам нужно
обработать входящие TCP-соединения (например,
в серверном приложении), используем
класс QTcpServer. Вызвав QTcpServer::listen(), установите сервер,
и соединитесь с сигналом QTcpServer::
Хотя большинство
его функций работает асинхронно,
возможно синхронное использование QTcpSocket (в блокирующем режиме).
Чтобы установить блокирующий режим вызывается
функции waitFor...() QTcpSocket'а; они приостанавливают
выполнение потока до тех пор, пока не
будет получен сигнал. Например, после
вызова неблокирующей функции QTcpSocket::
Использование синхронных сокетов часто приводит к более простому коду. Главное неудобство waitFor...() подхода состоит в том, что события не будут обрабатываться, пока поток блокируется функцией waitFor...(). Если использовать в GUI потоке, то это может "заморозить" пользовательский интерфейс приложения.
Исходными данными в данной задаче являются следующие значения:
Данные о выбранной ветке
Данные отправляются серверу во время щелчка по ветке дерева отображающие реестр Windows.
Формат пакета, передаваемого от клиента к серверу - строка, которая состоит из 6 последовательностей.
Первая последовательность – длина выбранной ветки (2 разряда).
Вторая последовательность – строка, состоящая из имени выбранной ветки.
Третья последовательность – длина раздела реестра (2 разряда).
Четвертая последовательность – строка, состоящая из наименования раздела реестра ("HKEY_CLASSES_ROOT", "HKEY_CURRENT_CONFIG", "HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE", "HKEY_USERS").
Пятая последовательность – длина полного пути выбранной ветки (2 разряда).
Шестая последовательность – строка, состоящая из полного пути выбранной ветки без раздела реестра.
Форматы пакетов, передаваемого от сервера к клиенту.
- Передача имени хоста – строка, которая состоит из 3 последовательностей.
Первая последовательность – строка с текстом “SER” (3 байта)
Вторая последовательность – длина строки имени хоста (2 разряда).
Третья последовательность – строка, состоящая из имени хоста.
- Передача дочерних веток реестра – строка, которая состоит из 7 последовательностей.
Первая последовательность – строка с текстом “SUB” (3 байта)
Вторая последовательность – длина строки выбранной ветки пользователем (2 разряда).
Третья
последовательность – строка, состоящая
из имени выбранной ветки
Четвертая последовательность – длина строки количества дочерних веток.
Пятая последовательность – строка, состоящая из значения дочерних веток.
Шестая последовательность – длина имени дочерней ветки (2 разряда).
Седьмая последовательность – строка, состоящая из имени дочерней ветки.
Шестая и седьмая последовательность повторяется столько раз сколько значений дочерних веток.
- Передача значений ветки реестра – строка, которая состоит из 6 последовательностей.
Первая последовательность – строка с текстом “VAL” (3 байта)
Вторая последовательность – длина строки выбранной ветки пользователем (2 разряда).
Третья
последовательность – строка, состоящая
из имени выбранной ветки
Четвертая последовательность – длина строки количества значении ветки.
Пятая последовательность – строка, состоящая из количества значении ветки.
Шестая последовательность – длина строки значения ветки (2 разряда).
Седьмая последовательность – строка, состоящая из значения ветки.
Шестая и седьмая последовательность повторяется столько раз сколько значений ветки.
2.4.2.Описание методов приложения
Методы клиента
Методы класса MainWindows:
void setOrientation(ScreenOrientati
QString TwoInt(int i); //преобразование числа в 2 разрядное число
void MoveWidget(int i); // перемещение виджета (анимация)
private slots:
void on_pushButton_clicked(); //обработчик нажатия кнопки «Соединиться»
void onSokConnected(); //обработчик при подключения сокета
void onSokReadyRead(); //обработчик при получения данных
void on_toolButton_clicked(); //обработчик кнопки «Выход»
void ListEdit(); - редактирование списка в treeWidget.
void on_treeWidget_itemClicked(QTre
Переменные класса MainWindows:
private:
Ui::MainWindow *ui;
QTcpSocket *_sok; //сокет
quint16 _blockSize;//текущий размер блока данных
QString _name;//имя клиента
Методы Сервера:
Методы класса MainWindows:
QString TwoInt(int i); //преобразование числа в 2 разрядное число
void QueryKey(HKEY hKey, QTextEdit *TE, QTableWidget *TW, QTreeWidget *TrV, QTreeWidgetItem *item) //функция для получения дочерних веток и значений.
void QueryKey2(HKEY hKey) //функция для получения дочерних веток и значений и отправке клиенту.
private slots:
void on_pushButton_clicked(); //обработчик нажатия кнопки « Запустить Удаленный Просмотр»
void on_treeWidget_itemClicked(QTre
void newConnection(); обработчик при создании сервера
void onSokReadyRead(); ////обработчик при получения данных
Переменные класса MainWindows:
QTcpServer *server;