Разработка приложения для чтения локального и удаленного реестра Windows

Автор: Пользователь скрыл имя, 12 Января 2012 в 09:30, курсовая работа

Описание работы

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

QTcpSocket работает асинхронно и посылает сигналы, сообщающие об изменении статуса и ошибках. Что зависит от цикла событий для обнаружения поступающих данных и автоматического сброса отправляемых. Записывать данные в сокет можно используя QTcpSocket::write(), а читать данные используя QTcpSocket::read(). QTcpSocket предоставляет два независимых потока данных: один для чтения, другой для записи.

Так как QTcpSocket унаследован от QIODevice, можно использовать его с QTextStream и QDataStream. При чтении из QTcpSocket нужно удостовериться, что доступно достаточно данных, это можно сделать с помощью вызова QTcpSocket::bytesAvailable().

Если нам нужно  обработать входящие TCP-соединения (например, в серверном приложении), используем класс QTcpServer. Вызвав QTcpServer::listen(), установите сервер, и соединитесь с сигналом QTcpServer::newConnection(), который посылается для каждого клиента при соединении. В слоте вызовим QTcpServer::nextPendingConnection() для того, чтобы принять соединение и использовать возвращаемый объект QTcpSocket для общения с клиентом.

Хотя большинство  его функций работает асинхронно, возможно синхронное использование QTcpSocket (в блокирующем режиме). Чтобы установить блокирующий режим вызывается функции waitFor...() QTcpSocket'а; они приостанавливают выполнение потока до тех пор, пока не будет получен сигнал. Например, после вызова неблокирующей функции QTcpSocket::connectToHost(), вызывается QTcpSocket::waitForConnected(), чтобы блокировать поток до получения сигнала connected().

Использование синхронных сокетов часто приводит к более простому коду. Главное неудобство waitFor...() подхода состоит в том, что события не будут обрабатываться, пока поток блокируется функцией waitFor...(). Если использовать в GUI потоке, то это может "заморозить" пользовательский интерфейс приложения.

Исходными данными в данной задаче являются следующие значения:

     Данные о выбранной ветке пользователем  - пакеты, которые присылаются от  клиента серверной части.

Данные  отправляются серверу во время щелчка по ветке дерева отображающие реестр Windows.

Формат  пакета, передаваемого от клиента  к серверу - строка, которая состоит  из 6 последовательностей.

Первая  последовательность – длина выбранной ветки (2 разряда).

Вторая последовательность – строка, состоящая из имени выбранной ветки.

    

Третья  последовательность – длина раздела  реестра (2 разряда).

Четвертая последовательность – строка, состоящая из наименования раздела реестра ("HKEY_CLASSES_ROOT", "HKEY_CURRENT_CONFIG", "HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE", "HKEY_USERS").

 

Пятая последовательность – длина полного  пути выбранной ветки (2 разряда).

Шестая последовательность – строка, состоящая из полного  пути выбранной ветки без раздела  реестра.

 

          Форматы пакетов, передаваемого от сервера к клиенту.

  1. Передача имени хоста – строка, которая состоит из 3 последовательностей.

    Первая  последовательность – строка с текстом  “SER” (3 байта)

    Вторая последовательность – длина строки имени хоста (2 разряда).

    Третья  последовательность – строка, состоящая  из имени хоста.

 
  1. Передача  дочерних веток реестра – строка, которая состоит из 7 последовательностей.

    Первая  последовательность – строка с текстом  “SUB” (3 байта)

    Вторая последовательность – длина строки выбранной ветки  пользователем (2 разряда).

    Третья  последовательность – строка, состоящая  из имени выбранной ветки пользователем.

    Четвертая последовательность – длина строки количества дочерних веток.

    Пятая последовательность – строка, состоящая  из значения дочерних веток.

    Шестая  последовательность –   длина имени дочерней ветки (2 разряда).

    Седьмая последовательность – строка, состоящая  из имени дочерней ветки.

 

Шестая  и седьмая последовательность повторяется  столько раз сколько значений дочерних веток.

 
 
  1. Передача  значений ветки реестра – строка, которая состоит из 6 последовательностей.

    Первая  последовательность – строка с текстом  “VAL” (3 байта)

    Вторая последовательность – длина строки выбранной ветки  пользователем (2 разряда).

    Третья  последовательность – строка, состоящая  из имени выбранной ветки пользователем.

    Четвертая последовательность – длина строки количества значении ветки.

    Пятая последовательность – строка, состоящая  из количества значении ветки.

    Шестая  последовательность –   длина  строки значения ветки (2 разряда).

    Седьмая последовательность – строка, состоящая  из значения ветки.

 

    Шестая  и седьмая последовательность повторяется  столько раз сколько значений ветки.

 
 

2.4.2.Описание методов приложения

Методы  клиента

Методы класса MainWindows:

void setOrientation(ScreenOrientation orientation); //изменение ориентации экрана

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(QTreeWidgetItem *item, int column); - обработчик при щелчке на treeWidget.

      

Переменные класса 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(QTreeWidgetItem *item, int column); // обработчик при щелчке на treeWidget.

    void newConnection(); обработчик при создании сервера

     void onSokReadyRead(); ////обработчик при получения данных

 
 

     Переменные класса MainWindows:

QTcpServer *server;

Информация о работе Разработка приложения для чтения локального и удаленного реестра Windows