Краткие теоретические сведения. Реестр (Registry) — специальная системная база данных, в которой приложения и операционная система могут сохранять информацию о конфигурации

Реестр (Registry) — специальная системная база данных, в которой приложения и операционная система могут сохранять информацию о конфигурации.

Системный реестр служит для осуществления ряда функций:

– хранение конфигураций оборудования и об устройствах «Plug-and-Play»;

– хранение списка драйверов и их параметров;

– описания программных интерфейсов (например, интерфейсы COM-серверов);

– таблица ассоциаций файлов данных;

– хранение конфигурации и значений параметров программ;

– обслуживание различных административных программ, например, панель управления (Control Panel).

Реестр имеет иерархическую древовидную структуру. Узлы дерева называются ключами (key). Каждый ключ может содержать любое количество подключей (sub-key) и значений (values), причем и те, и другие организованы в виде неупорядоченных списков, элементам которых присвоены индексы начиная с нуля. Различие между ключами и подключами в действительности условно, фактически все ключи являются подключами различного уровня нескольких предопределенных ключей (см. ниже). Значения ключей могут быть строковыми, двоичными и числовыми; также ключ может быть ссылкой на другой ключ (см. ниже). Каждый ключ идентифицируется его именем, уникальным относительно вышестоящего ключа, открытые ключи идентифицируются описателем (номером), тип HKEY (Handle). Значения идентифицируются также именами и индексами в списке.

Данные в системном реестре хранятся в двоичном виде. Для работы с ними приложения должны использовать специальные системные функции. Различают hive (букв. «улей») ключей, то есть их двоичный образ в структурах в памяти, называемых собственно реестром, и файлы данных реестра.

Для работы с ключом приложение должно открыть его. При открытии ключа необходимо указать открытый ранее ключ в качестве вышестоящего. Система всегда предоставляет четыре предопределенных (predefined) ключа верхнего уровня, которые считаются открытыми всегда и могут использоваться как точки входа в реестр: HKEY_LOCAL_MACHINE — описание известных на этот момент конфигураций компьютера; HKEY_CLASSES_ROOT — описание текущей конфигурации машины, ссылка на одну из конфигураций HKEY_LOCAL_MACHINE); HKEY_USERS — описание всех имеющихся пользо­вателей; HKEY_CURRENT_USER — описание текущего пользователя, ссылка на одного из пользователей HKEY_USERS; HKEY_CURRENT_CONFIG — текущий подключ Config (ссылка) ключа HKEY_LOCAL_MACHINE;

Система предоставляет ряд функций для доступа к реестру. Ниже перечислены некоторые из них.

RegCreateKey(), RegCreateKeyEx() — создание нового или открытие существу­ющего ключа в реестре; создаваемый или открываемый ключ обязательно должен быть подключом уже открытого ключа.

RegOpenKey(), RegOpenKeyEx() — только открытие существующего ключа, в остальном аналогичны предыдущим.

RegCloseKey() — закрытие открытого ключа.

RegDeleteKey() — удаление ключа.

RegFlushKey() — выгрузка содержимого ключа в соответствующий файл реестра.

RegSaveKey(), RegLoadKey() — выгрузка содержимого ключа в отдельный файл и загрузка из него.

RegEnumKey(), RegEnumKeyEx() — получение (чтение) списка подключей.

RegEnumValue() — получение (чтение) списка значений.

RegQueryValue(), RegQueryValueEx() — чтение значения по его имени.

RegQueryMultipleValues() — чтение списка значений.

Ввиду относительной сложности и громоздкости обращений к реестру можно реализовать собственные «оберточные» функции для доступа по именам и «путям» реестре, аналогично работе с файловой системой.

На пользовательском уровне для работы с реестром служит утилита regedit, поддерживающая как интерактивный, так и командный (выполнение пакетных файлов) режимы.

Контрольные вопросы

1) Назначение реестра

2) Структура реестра

3) Поддерживаемые типы данных в реестре

4) API для работы с реестром

5) Порядок и правила работы с реестром.

Варианты заданий

1. Поиск в реестре значений, в том числе по шаблону (для текстовых), и вывод в удобной форме результатов поиска.

2. Поиск в реестре неиспользуемых и/или недействительных ключей и значений, например ссылающихся на несуществующие файлы и пути.

3. Получение и модификация отдельных элементов реестра (например, чтение текущей конфигурации, изменение отдельных настроек, чистка «историй» программ и т.п.)


Литература

1. Бек Л. Введение в системное программирование: Пер. с англ. — М.: Мир, 1988. — 448 с.: ил.

2. Вильямс А. Системное программирование в Windows 2000 для профессионалов. Пер. с англ. П.Анджана. — СПб.: Питер, 2001. — 624 с.: ил.

3. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. — СПб.: Питер, 2001. — 736 с.: ил.

4. Гук М. Аппаратные средства IBM PC. – СПб, Питер, 1996. — 224 с.: ил.

5. Гук М. Аппаратные интерфейсы ПК. Энциклопедия. — СПб.: Питер, 2002. – 528 с.: ил.

6. Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT: Пер. с англ. / Предисл. Н.В.Гайского. — М.: Финансы и статистика, 1992. — 544 с.

7. Зубков С.В. Assembler для DOS, Windows и UNIX. 3-е изд. — М.: ДМК пресс, СПб.: Питер, 2006. — 608 с.

8. Касаткин А.И. Профессиональное программирование на языке Си. Управление ресурсами: Справ. пособие. — Мн.: Выш. шк., 1992. – 432 с.

9. Кулаков В. Программирование дисковых подсистем. — СПб.: Питер, 2002

10. Кулаков В. Программирование на аппаратном уровне. Спец. спра­вочник. 2-е изд. — СПб.: Питер, 2003. – 848 с.

11. Мешков А.В., Тихомиров Ю.В. Visual C++ и MFC: Пер. с англ. – 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2002. – 1040 с., ил.

12. Просиз Дж. Управление памятью в DOS 5: Пер. с англ. — М.: Мир, 1994. — 240 с., ил.

13. Рихтер Дж. Windows для профессионалов. — СПб.: Питер, 2000. — 752 с.

14. Руссинович М., Соломон Д. Внутреннее устройство Microsoft Win­dows. 4-е изд. — СПб.: Питер, Русская Редакция, 2005. — 992 с.

15. Скляров В.А. Программное и лингвистическое обеспечение персо­нальных ЭВМ. Системы общего назначения: Справ. пособие. — Мн.: Выш. шк., 1992. – 462 с.: ил.

16. Скляров В.А. Программное и лингвистическое обеспечение персо­нальных ЭВМ. Новые системы: Справ. пособие. — Мн.: Выш. шк., 1992. — 334 с.: ил.

17. Сорокина С.И. и др. Программирование драйверов и систем безопас­ности: Учеб. пособие. / Сорокина С.ТИ., Тихонов А.Ю., Щерба­ков А.Ю. — СПб.: БХВ-Петербург, М.: издатель Молчанов С.В. — 2002. — 256 с.: ил.

18. Таненбаум Э. Современные операционные системы. 2-е изд. — СПб.: Питер, 2002. — 1040 с.

19. Таненбаум Э., Вудхалл А. Операционные системы. Разработка и реализация. 3-е изд. — СПб.: Питер, 2007. — 704 с.

20. Юров В.И. Assembler. Учебник для вузов. 2-е изд. — СПб.: Питер, 2007. — 640 с.

21. Assembler: практикум / В.И. Юров. — СПб.: Питер, 2002. — 400 с.: ил.


Вывод процессов в системе

Программа должна:

- Выводить список всех процессов, запущенных в системе и информацию о

них (PID, сколько занимает в памяти,...)

- Выводить информацию о системе (все, что получиться узнать)

Продумать удобный и приятный интерфейс.

Программа "ProcessMonitor".

Функциональность программы:

1) Вывести список процессов в системе, используя элемент управления TreeView.

2) Для выбранного процесса вывести сведения о нем (приоритет, PID,

кол-во используемой памяти, кол-во объектов GDI) и его потоках, используя компонент StringGrid.

3) Предусмотреть возможность завершения процессов системы.

4) Предоставить возможность изменения приоритета выбранного процесса. Желаемый уровень приоритета должен выбираться из списка возможных значений.

Изучение подсистемы памяти Windows, используя отладчик ядра.

Команды:!vm,!poolused,!lookaside…

Подсистема безопасности в ОС Windows.

Лабораторная работа 15:
Технологии COM


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: