Реестр в ОС Windows
Создание системной утилиты, работающей с реестром ОС Windows; структура, функции и роль реестра. Разработка программного обеспечения: интерфейс, структурная схема вызовов окон приложений; реализация и тестирование программы, процедуры; листинг модулей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 01.06.2013 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
СОДЕЖАНИЕ
- ВВЕДЕНИЕ
- 1. АНАЛИЗ СОСТОЯНИЯ ВОПРОСА
- 1.1 Что такое реестр
- 1.2 Роль реестра
- 1.3 Реестр Windows 3.1
- 1.4 Реестр Windows NT 3.1
- 1.5 Современный реестр Windows7
- 1.6 Архитектура реестра
- 1.7 Структура реестра
- 2. ПОСТАНОВКА ЗАДАЧИ
- 3. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- 3.1 Интерфейс программы
- 3.2 Структурная схема вызовов окон приложений
- 4. РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- 4.1 Физическая структура приложения
- 4.2 Описание стандартных методов использованных в при реализации приложения
- 4.3 Описание основных процедур и функции
- 5. ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- 5.1 Cоздание нового раздела
- 5.2 Добавление новых ключей со значениями новых ключей
- 5.3 Изменение ключа
- 5.4 Удаление раздела со всеми ключами
- 5.5 Результаты тестирования
- ВЫВОДЫ
- СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- ПРИЛОЖЕНИЕ А
- ВВЕДЕНИЕ
- Во всех версиях Windows, начиная с Windows 95, системный реестр является центральным хранилищем всей конфигурационной информации, касающейся настройки Windows, пользовательских предпочтений, а также установленного программного и аппаратного обеспечения. Поэтому есть необходимость в создании системной утилиты работающей с системным реестром Windows. Данная утилита должна поддерживать вывод ключей реестра, создание и удаление ключей, а также иметь возможность изменения их.
- В первом разделе рассказывается о системном реестре в целом. Описывается его структура, роль и выполняемые им функции.
- Во втором разделе была сформулирована задача, которую необходимо реализовать в данном курсовом проекте.
- В третьем и четвертом разделах рассмотрены основные моменты на этапах проектирования и реализации программного обеспечения.
- В пятом разделе производится тестирование программного продукта и его сравнение со стандартной утилитой редактирования реестра Regedit.
- К записке также прилагается листинг исполняемых модулей и графическая часть.
- Курсовой проект выполнен с учётом требований к содержанию и оформлению курсового проекта [1], а также гостов на построение блок схем [2], [3].
1. АНАЛИЗ СОСТОЯНИЯ ВОПРОСА
1.1 Что такое реестр
Словарь Microsoft Computer Dictionary дает такое определение Реестра: Иерархически построенная, централизованная база данных в составе операционных систем Microsoft Windows 9x/NT/2000/XP/2003/Vista/7, содержащая сведения, которые используются операционной системой для работы с пользователями, программными продуктами и устройствами.
В реестре хранятся данные, которые необходимы для правильного функционирования Windows. К ним относятся профили всех пользователей, сведения об установленном программном обеспечении и типах файлов, которые могут быть созданы каждой программой, информация о свойствах папок и значках приложений, а также установленном оборудовании и используемых портах.
Системный реестр заменяет собой большинство текстовых ini-файлов, которые использовались в Windows 3.x, а также файлы конфигурации MS-DOS (например, Autoexec.bat и Config.sys).
Версии реестра для разных версий операционных систем семейства Windows имеют определенные различия.
Во время запуска операционной системы происходит до тысячи обращений к Реестру, а во время работы на ПК в течение одного сеанса работы - до 10 тысяч. Отдельные компоненты Реестра хранятся в оперативной памяти ПК в течение всего сеанса работы.
Запись (считывание) информации в Реестр (из Реестра) происходит постоянно: например, если мы устанавливаем какую-нибудь программу, вся информация, необходимая для запуска и работы этой программы, записывается в Реестр. Если мы устанавливаем новое устройство, в Реестре будет отмечено, где находится его драйвер и т.д. Если же мы запускаем какую-либо программу или устройство, то из Реестра считывается вся необходимая для запуска программы (устройства) информация.
1.2 Роль реестра
Реестр можно рассматривать как записную книжку Windows - как только системе нужна какая-то информация, то она ищет ее в реестре. Реестр очень обширен и дать однозначное его определение невозможно. Приблизительно, Реестр - компонент операционной системы компьютера, который в иерархической базе данных хранит важнейшие установки и информацию о приложениях, системных операциях и пользовательской конфигурации.
Реестр выполняет следующие основные функции:
1) отслеживает все системные устройства и их установки, включая такие ресурсы, как запросы на прерывания (IRQ) и номера каналов прямого доступа памяти (DMA);
2) работает как база данных, которая унифицирует функционирование приложений;
3) проверяет наличие необходимых драйверов для инсталлируемого оборудования. При добавлении нового периферийного устройства Диспетчер конфигурации (Configuration manager) операционной системы помещает конфигурационные данные устройства в реестр;
4) предоставляет системные сервисы, которые необходимы для работы многих приложений;
5) обеспечивает запуск необходимого приложения при щелчке мышью;
6) сохраняет информацию, относящуюся к системным правилам, профилям пользователей и средствам администрирования.
Реестр - это не статическая база данных, он постоянно работает и постоянно обновляется. При запуске любой программы происходит множество обращений к реестру, еще больше обращений происходит при запуске компьютера.
1.3 Реестр Windows 3.1
Сам реестр, как древовидная иерархическая база данных (registration database -- регистрационная база) впервые появился в Windows 3.1 (апрель 1992). Это был всего один двоичный файл, который назывался REG.DAT и хранился в каталоге C:\Windows\. Реестр Windows 3.1 имел только одну ветку HKEY_CLASSES_ROOT. Он служил для связи DDE, а позднее и OLE объектов.
Одновременно c появлением реестра в Windows 3.1 появилась программа REGEDIT.EXE для просмотра и редактирования реестра.
Первый реестр уже имел возможность импорта данных из *.REG файлов. В базовой поставке шел файл SETUP.REG, содержащий данные по основным расширениям и типам файлов.
Реестр Windows 3.1 имел ограничение на максимальный размер файла REG.DAT -- 64 Кбайт. Если вдруг реестр превышал этот размер -- то файл реестра (REG.DAT) приходилось удалять и собирать заново либо из *.REG файлов, либо вводить данные вручную.
1.4 Реестр Windows NT 3.1
Следующий шаг сделан в Windows NT 3.1 (июль 1993). Произошёл отказ от устаревших файлов MS-DOS: AUTOEXEC.BAT и CONFIG.SYS, а также от INI-файлов, как от основных файлов конфигурации. На “регистрационную базу” (реестр) была переведена вся конфигурация системы. Основой конфигурации системы стал реестр. Он имел 4 корневых раздела: HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CLASS-ES_ROOT и HKEY_USERS.
Реестр стал «сборным»: на диске он хранился в файлах: DEFAULT, SOFTWARE, SYSTEM, а при запуске системы из этих файлов собиралась единая БД.
В комплекте поставки оставался файл REGEDIT.EXE, который по прежнему позволял просматривать и редактировать только ветку HKEY_CLASSES_ROOT, и появился файл REGEDT32.EXE, который позволял редактировать все ветки реестра.
Далее технология и идеология (назначение) реестра уже не менялись. Все последующие версии Windows (NT 3.5, 95, NT 4.0, 98, 2000, XP, Vista, 7) использовали реестр как основную БД, содержащую все основные данные по конфигурации как самой ОС, так и прикладных программ. Далее менялось только расположение и название файлов реестра, и название и назначение ключей.
1.5 Современный реестр Windows
Реестр в том виде, как его использует Windows и как видит его пользователь в процессе использования программ работы с реестром, некоторым образом «нигде не хранится», а формируется из различных данных. Чтобы получилось то, что видит пользователь, редактируя реестр, происходит следующее.
Вначале, в процессе установки и настройки Windows, на диске формируются файлы, в которых хранится часть данных относительно конфигурации системы.
Затем, в процессе каждой загрузки системы, а также в процессе каждого входа и выхода каждого из пользователей, формируется некая виртуальная сущность, называемая «реестром» -- объект REGISTRY\. Данные для формирования «реестра» частично берутся из тех самых файлов (Software, System …), частично из информации, собранной ntdetect при загрузке (HKLM\Hardware\Description).
То есть часть данных реестра хранится в файлах, а часть данных формируется в процессе загрузки Windows.
Для редактирования, просмотра и изучения реестра стандартными средствами Windows (программы regedit.exe и regedt32.exe) доступны именно ветки реестра. После редактирования реестра и/или внесения в него изменений эти изменения сразу записываются в файлы.
Однако есть программы сторонних разработчиков, которые позволяют работать непосредственно с файлами.
Программы оптимизации реестра, твикеры, а также инсталляторы и деинсталляторы программ работают через специальные функции работы с реестром.
1.6 Архитектура реестра
Информация, хранящаяся в иерархической базе данных реестра, собрана в разделы (key), которые содержат один или более подразделов (subkey).
Возможность создавать вложенные подразделы позволяет группировать параметры. В результате получается древовидная структура, которую можно просмотреть в Редакторе реестра (Registry editor). Каждый раздел (ветвь) соответствует определенному типу информации о пользователе, аппаратном обеспечении, приложении и т.д.
1.7 Структура реестра
Реестр состоит из следующих разделов (ветвей):
1) HKEY_CURRENT_USER - данный раздел является корневым для данных конфигурации пользователя, вошедшего в систему в настоящий момент. Здесь хранятся папки пользователя, цвета экрана и параметры панели управления. Эти сведения сопоставлены с профилем пользователя. Вместо полного имени раздела иногда используется аббревиатура HKCU;
2) HKEY_USERS - данный раздел содержит все активные загруженные профили пользователей компьютера. Раздел HKEY_CURRENT_USER является подразделом раздела HKEY_USERS. Вместо полного имени раздела иногда используется аббревиатура HKU;
3) HKEY_LOCAL_MACHINE - содержит параметры конфигурации, относящиеся к данному компьютеру (для всех пользователей). Вместо полного имени раздела иногда используется аббревиатура HKLM;
4) HKEY_CLASSES_ROOT - является подразделом HKEY_LOCAL_MACHINE \Software. Хранящиеся здесь сведения обеспечивают выполнение необходимой программы при открытии файла с использованием проводника. Вместо полного имени раздела иногда используется аббревиатура HKCR. Начиная с Windows 2000, эти сведения хранятся как в HKEY_LOCAL_MACHINE, так и в HKEY_CURRENT_USER. Раздел HKEY_LOCAL_ MACHINE\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKEY_CURRENT_USER\Software\Classes, переопределяют принятые по умолчанию и относятся только к текущему пользователю. Раздел HKEY_CLASSES_ROOT включает в себя данные из обоих источников.
Кроме того, раздел HKEY_CLASSES_ROOT предоставляет эти объединенные данные программам, разработанным для более ранних версий Windows. Изменения настроек текущего пользователя выполняются в разделе HKEY_CURRENT_USER\Software\Classes. Модификация параметров по умолчанию должна производиться в разделе HKEY_LOCAL_MACHINE\Software\Classes. Данные из разделов, добавленных в HKEY_CLASSES_ROOT, будут сохранены системой в разделе HKEY_LOCAL_MACHINE\Software\Classes. Если изменяется параметр в одном из подразделов раздела HKEY_CLASSES_ROOT и такой подраздел уже существует в HKEY_CURRENT_USER\Software\Classes, то для хранения информации будет использован раздел HKEY_CURRENT_USER\Software\Classes, а не HKEY_LOCAL_MACHINE\Software \Classes;
5) HKEY_CURRENT_CONFIG - данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы.
2. ПОСТАНОВКА ЗАДАЧИ
В соответствии с заданием курсового проекта, должна быть исследована структура системного реестра и разработано программное обеспечение для просмотра и изменения системного реестра.
Приложение должно обладать следующим функционалом:
1) вывод всех веток реестра;
2) просмотр списка ключей для определенной директории реестра;
3) добавление новых ключей со значениями разного типа;
4) редактирование ключей;
5) добавление новой папки (директории) в реестр;
6) удаление определенной папки (директории) и ключа;
7) вывод сведений о программе.
Приложение должно быть разработано для операционной системы Window 7 с помощью инструментального средства Microsoft Visual Studio 2010, на основе интерфейса Windows Forms.
3. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
3.1 Интерфейс программы
Как известно, разрабатываемое приложение должно быть интуитивно понятным для пользователей. Для этого, интерфейс программы должен быть спроектирован наиболее простым и понятным способом. Для этого необходимо реализовать главное меню, в котором будут реализованы операции добавления раздела и ключа, изменение ключа, а также удаление раздела и ключа. Далее приведу примерное изображение меню (см. рисунок 3.1.1):
Рисунок 3.1.1 - Примерное изображение основного меню
Операция создания нового ключа может создавать ключи как строчного типа, так и DWORD типа. Для возможности выбора определенного типа ключа было создано выпадающее меню для операции создания ключа (см. рисунок 3.1.2):
Рисунок 3.1.2 - Примерное изображение выпадающего меню
Поскольку нам необходимо выводить все ветки реестра на форму, добавляем элемент управления TreeView, в котором будут отображаться все директории реестра. Для отображения имен и значений ключей поместим на форму элемент DataGrid. В нем данные будут отображаться в виде таблицы (см. рисунок 3.1.3):
Рисунок 3.1.3 - Примерное изображение таблицы
В итоге главное окно программы будет иметь следующий вид (см. рисунок 3.1.4):
Рисунок 3.1.4 - Главное окно программы
Для удобства использования программы все основные операции реализованы в виде диалогов, ввиду их простоты и удобства, как создания, так и модифицирования.
Диалог добавления ключа должен иметь 2 элемента управления TextBox, в которые пользователь будет вводить имя и значение ключа. Примерное изображение диалога добавления нового ключа приведено на рисунке 3.1.5:
Рисунок 3.1.5 - Диалоговое окно добавления нового ключа
Также пользователь должен иметь возможность изменения имени и значения определенного ключа. Для этого нужно будет выбрать необходимый ключ из таблицы ключей и нажать пункт меню “Изменить”. В результате появится диалоговое окно изменения ключа (см. рисунок 3.1.6):
Рисунок 3.1.6 - Примерное изображения диалога изменения ключа
После редактирования ключа, имя и значение в таблице должны обновиться автоматически.
3.2 Структурная схема вызовов окон приложений
Данное приложение многооконное. Оно состоит из главного окна и 4 диалоговых. Каждый пункт меню главного окна вызывает свое собственное диалоговое окно. Для конкретизации вызовов окон в приложении, приведу структурную схему, изображённую на рисунке 3.2.1:
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рисунок 3.2.1 - Структурная схема вызовов окон
4. РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
4.1 Физическая структура приложения
Физическая структура данного приложения состоит из нескольких программных модулей (см. рисунок 4.1.1):
Рисунок 4.1.1 - Изображение “Обозревателя решения”
Список основных модулей приложения и их описание:
1) Main.cs - главное окно приложения, содержит код реализующий все обработчики событий и основные функции, а именно, добавление ключей разного типа, создание и удаление разделов, изменение и удаление ключей;
2) CreateDirForm.cs - диалоговое окно добавления нового раздела, в коде которого хранится название нового раздела, которое будет передано модулю Main.cs для создания и отображения нового раздела;
3) СreateStrRegForm.cs - диалоговое окно создания нового строчного ключа, информация из которого будет передано в модуль Main.cs, где и будет произведено добавления нового ключа;
4) DwordRegForm.cs - окно создания нового ключа со значением типа DWORD. Принцип работы аналогичен с модулем добавления ключа со строчным значением;
5) EditRegForm.cs - диалог редактирования имен и значений ключей. Исправленная информация будет передана в модуль главного окна, где будут произведены изменения ключа.
4.2 Описание стандартных методов использованных при реализации приложения
Для реализации курсового проекта используется среда Microsoft Visio Studio 2010. Она имеет пользовательский интерфейс, предоставляет удобные средства для написания программы. Необходимо отметить, что данный программный продукт представляет собой довольно мощный инструмент для разработки программ подобного типа.
Для того чтобы разобраться в реализации данного проекта приведу описание используемых методов класса RegistyKey, предоставляемого программной платформой .NET Framework версии 4.0.
Для возвращения вложенного раздел с доступом только для чтения используем метод OpenSubKey класса RegistryKey. Для использования этого класса необходимо подключить пространство имен Microsoft.Win32.
Для создание нового вложенного раздела или открытия существующего вложенного раздела, с доступом на чтение и запись вызываем метод CreateSubKey класса Registry.
Метод GetSubKeyNames класса RegistryKey возвращает массив строк, который содержит все имена раздела.
Для установления значения пары “имя-значения” в разделе реестра используется метод SetValue класса RegistryKey.
Для удаления заданного значения из раздела используется метод DeleteValue.
4.3 Описание основных процедур и функции
Основу грамотного функционирования приложения составляют процедуры и функции, реализующие работу с реестром и отображающие результаты этой работы.
Основные функции, используемые при создании данного программного обеспечения:
- private void FillNodes(RegistryKey reg, string[] s, TreeNode tn) - процедура, выводящая на экран все директории реестра. Блок-схема алгоритма работы данной процедуры приведен на листе 1 графической части приложения Б;
- private RegistryKey FindReg(TreeNode tnC, RegistryKey rg, TreeNode tnS) - метод выполняющий поиск ключа. Данная функция возвращает экземпляр класса RegistryKey. Блок-схема алгоритма работы данной функции приведен на листе 2 графической части приложения Б;
- private RegistryKey Findreg_by_path(TreeNode te) - функция, выполняющая поиск ключа по пути;
- private void FillGrid(string[] str, RegistryKey rg) - процедура, которая заполняет таблицу именами и значениями ключей. Блок-схема алгоритма работы данной процедуры приведен на листе 3 графической части приложения Б.
5. ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Произведем тестирование разработанного программного обеспечения с целью выявления ошибок и неполадок. Тестирование программы будет выполняется на ноутбуке со следующей конфигурацией: Intel Core i7 2,2GHz, 4Gb DDR3, Windows Seven Ultimate.
Данное приложение разработано для операционных систем Windows XP/Vista/Seven. Для полного функционирования данного программного обеспечения необходимо определенное программное окружение, а именно, установленная программная платформа .NET Framework версии 4.0.
Для подтверждения работоспособности программы необходимо протестировать использование все функции программы.
План тестирования:
1) создание нового раздела;
2) добавление новых ключей со значениями разного типа;
3) изменение ключа;
4) удаление раздела со всеми ключами.
На каждом этапе тестирования результаты программного обеспечения будут сравниваться с результатами стандартной утилиты редактирования реестра Regedit, поставляемой с операционной системой Windows Seven Ultimate.
5.1 Cоздание нового раздела
Создадим новый раздел “Тестирование” в ветке HKEY_CURRENT_USER и сравним с результатом работы стандартной утилиты Regedit (см. рисунок 5.1.1 и рисунок 5.1.2):
Рисунок 5.1.1 - Добавление нового раздела
Рисунок 5.1.2 - Вывод ветки HKEY_CURRENT_USER с помощью Regedit
Из рисунка 5.1.1 и рисунка 5.1.2 видно, что раздел создан успешно.
5.2 Добавление новых ключей со значениями новых ключей
Далее создадим для раздела “Тестирование” ключ со строчным значением и со значение DWORD типа (см. рисунок 5.2.1 и рисунок 5.2.2). Сверим с результатом утилиты Regedit (см. рисунок 5.2.3).
Рисунок 5.2.1 - Диалоговое окно создания нового ключа
Рисунок 5.2.2 - Создание новых ключей
Рисунок 5.2.3 - Результаты утилиты Regedit
Строчный ключ “Cтрока” и ключ “DWORD” со значением типа DWORD созданы успешно.
5.3 Изменение ключа
Изменим имя строчного ключа на “Строка(измененная)” для тестирования операции изменения ключей (см. рисунок 5.3.1 и рисунок 5.3.2). И снова сравним с результатом стандартной утилиты Regedit (см. рисунок 5.3.3).
Рисунок 5.3.1 - Диалоговое окго изменения ключа
Рисунок 5.3.2 - Значения ключей после изменения
Рисунок 5.3.3 - Результат работы стандартной утилиты Regedit
Название ключа изменилось с “Строка” на “Строка (измененная)” успешно.
5.4 Удаление раздела со всеми ключами
Удалим наш созданный раздел вместе со всеми ключами (см. рисунок 5.4.1 и рисунок 5.4.2).
Рисунок 5.4.1 - Диалог подтверждения удаления
Рисунок 5.4.2 - Главное окно после удаления раздела “Тестирование”
Раздел “Тестирование” удален безвозвратно. Все ключи, входящие в этот раздел также удалены.
5.5 Результаты тестирования
Результаты тестирования показали, что все функции программы работают исправно. Сама программа работает стабильно, ошибки и сбой выявлены не были. Данное программное обеспечение ничем не уступает стандартной утилите редактирования реестра Regedit.
утилита реестр windows интерфейс
ВЫВОДЫ
В ходе выполнения данной курсовой работы было разработано приложение, демонстрирующее работу с системным реестром операционной системы Windows. Согласно результатам тестирования, представленный программный продукт оказался устойчивым к возникновению исключительных ситуаций.
Безусловно, спроектированное приложение демонстрирует не весь функционал и потенциал системного реестра. Однако вполне способно найти себе применение при конкретной модернизации. Например, может быть использовано пользователями для удаления ненужной информации из системного реестра или для редактирования её.
Также еще раз прекрасно себя показала программная платформа .NET Framework, используемая при создании данного курсового проекта. На ней очень удобно создавать системные приложения, так как она предоставляет большой инструментарий и легко понятную документацию для работы с ним.
ПРИЛОЖЕНИЕ А
ЛИСТИНГ ПРОГРАММЫ
Main.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;
using System.Security.AccessControl;
namespace Курсач
{
public partial class Main : Form
{
TreeNode treen;
RegistryKey[] reg = new RegistryKey[5];
RegistryKey tempreg = null;
bool isTreeClick = false;
RegistrySecurity rSec;
DataTable dt;
string p, m;
public Main()
{
reg[0] = Registry.CurrentUser;
reg[1] = Registry.ClassesRoot;
reg[2] = Registry.LocalMachine;
reg[3] = Registry.Users;
reg[4] = Registry.CurrentConfig;
InitializeComponent();
treeView1.Nodes.Add(reg[0].Name);
treeView1.Nodes.Add(reg[1].Name);
treeView1.Nodes.Add(reg[2].Name);
treeView1.Nodes.Add(reg[3].Name);
treeView1.Nodes.Add(reg[4].Name);
int i = 0;
foreach (TreeNode tn in treeView1.Nodes)
{
string[] str = reg[i].GetSubKeyNames();
string[] s;
for (int j = 0; j < str.Length; j++)
tn.Nodes.Add(str[j]);
foreach (TreeNode tnn in tn.Nodes)
{
try
{
RegistryKey r = reg[i].OpenSubKey(tnn.Text);
s = r.GetSubKeyNames();
}
catch (Exception) { continue; }
}
i++;
}
treeView1.CollapseAll();
dt = new DataTable("regtable");
dt.Columns.Add("Имя");
dt.Columns.Add("Значение");
dataGridView1.DataSource = dt;
dataGridView1.Columns[0].Width = 210;
dataGridView1.Columns[1].Width = 350;
}
private void FillNodes(RegistryKey reg, string[] s, TreeNode tn)
{
string[] ss;
if (s.Length != 0)
{
for (int k = 0; k < s.Length; k++)
tn.Nodes.Add(s[k]);
foreach (TreeNode tt in tn.Nodes)
{
try
{
RegistryKey rg = reg.OpenSubKey(tt.Text);
ss = rg.GetSubKeyNames();
}
catch (Exception) { continue; }
}
}
}
private RegistryKey Findreg_by_path(TreeNode te)
{
string s = te.FullPath;
string strtemp = null;
RegistryKey rg = null;
if (s != "HKEY_CLASSES_ROOT" && s != "HKEY_CURRENT_USER"
&&
s != "HKEY_LOCAL_MACHINE" && s != "HKEY_USERS" &&
s != "HKEY_CURRENT_CONFIG")
{
int i = 0;
while (s[i] != '\\')
{
strtemp += s[i];
i++;
}
switch (strtemp)
{
case "HKEY_CLASSES_ROOT":
rg = FindReg(treeView1.Nodes[1], reg[1], te); break;
case "HKEY_CURRENT_USER":
rg = FindReg(treeView1.Nodes[0], reg[0], te); break;
case "HKEY_LOCAL_MACHINE":
rg = FindReg(treeView1.Nodes[2], reg[2], te); break;
case "HKEY_USERS":
rg = FindReg(treeView1.Nodes[3], reg[3], te); break;
case "HKEY_CURRENT_CONFIG":
rg = FindReg(treeView1.Nodes[4], reg[4], te); break;
}
}
else
{
strtemp = s;
switch (strtemp)
{
case "HKEY_CLASSES_ROOT": return Registry.ClassesRoot;
case "HKEY_CURRENT_USER": return Registry.CurrentUser;
case "HKEY_LOCAL_MACHINE": return Registry.LocalMachine;
case "HKEY_USERS": return Registry.Users;
case "HKEY_CURRENT_CONFIG": { dt.Rows.Clear(); return
Registry.CurrentConfig; }
}
}
return rg; }
private RegistryKey FindReg(TreeNode tnC, RegistryKey rg, TreeNode tnS)
{
if (tempreg != null) return tempreg;
foreach (TreeNode tn in tnC.Nodes)
{
RegistryKey reg;
try { reg = rg.OpenSubKey(tn.Text, true); }
catch (Exception) { continue; }
if (tn.FullPath == tnS.FullPath)
{ tempreg = reg; return tempreg; }
else if (tn.Nodes.Count != 0) FindReg(tn, rg, tnS);
}
return tempreg;
}
private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
{
TreeNode tempnd = e.Node; string[] str;
RegistryKey regs;
regs = Findreg_by_path(tempnd);
if(regs!=null)
{
foreach (TreeNode tnn in tempnd.Nodes)
{
try
{
tnn.Nodes.Clear();
RegistryKey treg = regs.OpenSubKey(tnn.Text);
str = treg.GetSubKeyNames();
foreach (string ss in str)
{
tnn.Nodes.Add(ss);
}
}
catch (Exception) { continue; }
}
} tempreg=null;
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)
{
RegistryKey rg; treen = e.Node; string[] ses;
dt.Rows.Clear();
rg = Findreg_by_path(treen);
if (rg != null)
{
ses = rg.GetValueNames(); FillGrid(ses, rg);
}
} tempreg = null;
}
private void FillGrid(string[] str, RegistryKey rg)
{
DataRow dr = null;
for (int i = 0; i < str.Length; i++)
{
dr = dt.NewRow(); dr[0] = str[i]; dr[1] = rg.GetValue(str[i]);
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
}
private void создатьРазделключToolStripMenuItem_Click(object sender,
EventArgs e)
{
CreateDirForm AddNewDir = new CreateDirForm();
AddNewDir.ShowDialog();
if (!AddNewDir.Cancel)
{
RegistryKey rpath = Findreg_by_path(treen);
string newKey = AddNewDir.Name;
treeView1.BeginUpdate();
RegistryKey rg = rpath.CreateSubKey(newKey,
RegistryKeyPermissionCheck.ReadWriteSubTree);
treen.Nodes.Add(newKey);
treeView1.Refresh();
treeView1.EndUpdate();
}
}
private void удалитьToolStripMenuItem_Click_1(object sender, EventArgs
e)
{
if (MessageBox.Show("Вы действительно хотите удалить этот (раздел)
ключ и все дополнительные ключи (разделы)",
"Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)
== DialogResult.OK)
{
RegistryKey k_del = Findreg_by_path(treen);
if (isTreeClick)
{
if ((k_del.Name != "HKEY_CURRENT_USER") || (k_del.Name !=
"HKEY_CLASSES_ROOT")
|| (k_del.Name != "HKEY_LOCAL_MACHINE") || (k_del.Name !=
"HKEY_USERS") || (k_del.Name != "HKEY_CURRENT_CONFIG"))
{
RegistryKey k_del2 = Findreg_by_path(treen.Parent);
if (k_del2.SubKeyCount != 0)
k_del2.DeleteSubKeyTree(treen.Text);
else
k_del.DeleteSubKeyTree(treen.Text);
}
treeView1.SelectedNode.Remove();
}
else
{
k_del.DeleteValue((string)dataGridView1.CurrentRow.Cells[0].Value);
this.dataGridView1.CurrentRow.Cells[0].Value = "";
this.dataGridView1.CurrentRow.Cells[1].Value = "";
}
}
else return;
}
private void treeView1_Click(object sender, EventArgs e)
{
isTreeClick = true;
}
private void dataGridView1_Click(object sender, EventArgs e)
{
isTreeClick = false;
}
private void строковыйToolStripMenuItem_Click(object sender, EventArgs
e)
{
CreateStrRegForm frm = new CreateStrRegForm();
frm.ShowDialog();
if (!frm.Cancel)
{
string nm = frm.Name; string zn = frm.Znach;
RegistryKey k_addStr = Findreg_by_path(treen);
k_addStr.SetValue(nm, zn, RegistryValueKind.String);
DataRow dr = dt.NewRow(); dr[0] = nm; dr[1] = zn; dt.Rows.Add(dr);
}
}
private void dWORDToolStripMenuItem_Click(object sender, EventArgs e)
{
DwordRegForm frm = new DwordRegForm();
frm.ShowDialog();
int zn;
if (!frm.Cancel)
{
zn = Convert.ToInt32(frm.Znach);
string nm = frm.Name;
RegistryKey k_addQword = Findreg_by_path(treen);
k_addQword.SetValue(nm, zn, RegistryValueKind.DWord);
DataRow dr = dt.NewRow(); dr[0] = nm; dr[1] = zn; dt.Rows.Add(dr);
}
}
private void изменитьToolStripMenuItem_Click(object sender, EventArgs
e)
{
RegistryKey k_upd = Findreg_by_path(treen);
EditRegForm frm = new EditRegForm();
string upd = null;
string nname = null;
frm.textBox1.Text = (string)dataGridView1.CurrentRow.Cells[0].Value;
frm.textBox2.Text = (string)dataGridView1.CurrentRow.Cells[1].Value;
frm.textBox2.Focus(); frm.textBox2.SelectAll();
frm.ShowDialog();
if (!frm.Cancel)
{
k_upd.DeleteValue((string)dataGridView1.CurrentRow.Cells[0].Value);
upd = frm.Znach;
nname = frm.Name;
k_upd.SetValue(nname, upd);
dataGridView1.CurrentRow.Cells[0].Value = nname;
dataGridView1.CurrentRow.Cells[1].Value = upd;
}
}
private void оПрограммеToolStripMenuItem1_Click(object sender,
EventArgs e)
{
About aboutForm = new About();
aboutForm.ShowDialog();
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Размещено на Allbest.ru
Подобные документы
Возможности настройки операционной системы Windows. Сущность системного реестра. Описание API-функций работы с реестром. Диаграмма взаимодействия модулей. Интерфейс программы, основанный на разделении настроек на категории, представленные вкладками.
курсовая работа [47,7 K], добавлен 07.12.2010Рассмотрение правил создания, открытия и закрытия собственного ключа реестра. Описание функций, выполняющих процедуры сохранения произведенного изменения, добавления или удаления данных из ключей. Осуществление выборки информации из системного реестра.
реферат [24,5 K], добавлен 03.10.2010Реестр операционной системы Windows 2000/XP. Программные компоненты системы, работающие с реестром. Структура параметра реестра, его корневые разделы. Стандартные файлы, обеспечивающие поддержку кустов. Окно установки разрешений программы, аудит действий.
презентация [424,1 K], добавлен 20.12.2013Общая характеристика используемых типов параметров дерева реестра в разных версиях Windows. Сравнение способов хранения реестров Windows. Анализ взаимосвязи между кустами реестра и соответствующими им файлами. Понятие, сущность и значение reg-файла.
реферат [420,2 K], добавлен 04.10.2010Проектирование и отладка Windows-приложений для работы с внешними источниками данных. Функциональная блок-схема взаимодействия программных модулей. Описание связей между таблицами. Тестирование программного средства. Требования к техническому обеспечению.
курсовая работа [2,7 M], добавлен 17.05.2011Реализация программы, созданной средствами языка C#. Предназначение Windows-приложения для решения комплекса задач. Определение состава форм с графиком функции. Вычисление коэффициентов полинома. Создание текстового поля для введения корней многочлена.
курсовая работа [234,8 K], добавлен 13.11.2016Элементы интерфейса Windows NT. Средства взаимодействия пользователей с системой. Выполнение настройки компьютера. Ярлыки на рабочем столе. Типа окон: приложений, документов и диалоговые окна. Интерфейс администратора сети. Понятие web-браузера.
презентация [8,8 K], добавлен 23.10.2013Программа "Редактор реестра". Разделы реестра Windows и их назначение. Хранение настроек экрана, раскладки клавиатуры, сетевых подключений, настроек программ. Сохранение изменений настроек, совершенных пользователем. Информация о настройках компьютера.
презентация [1008,0 K], добавлен 05.04.2017Изучение технических возможностей операционной системы Windows XP – ОС семейства Windows NT корпорации Microsoft. Особенности интегрированного программного обеспечения. Дополнительные аплеты в панели управления Windows. Графический интерфейс пользователя.
презентация [7,4 M], добавлен 23.05.2010Системные требования для установки программного обеспечения Windows XP Professional, особенности его интерфейса, структуры, возможностей, практическое применение и круг пользователей. Характеристика работы приложений операционной системы, ее надежность.
презентация [1020,0 K], добавлен 02.02.2010