Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба5.doc
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
976.9 Кб
Скачать

17

Министерство образования и науки Российской Федерации

Казанский государственный технический университет

имени А.Н. Туполева

____________________________________________

Межкафедральный филиал факультета № 4 в ОАО ICL-КПО ВС

Р.Ф. Миннибаев

Методическое руководство к

лабораторной работе

“Работа с реестром и диалоговыми окнами.”

по дисциплине “Системное программирование”

КАЗАНЬ 2004

Содержание

1. Работа с реестром 3

1.1. Создание - открытие раздела 3

1.2. Чтение параметров раздела реестра 5

1.3. Занесения значения параметра раздела реестра 7

1.4. Закрытие раздела 8

1.5. Удаление раздела 8

2. Диалоговые окна. Определение и назначение 9

2.1. Описание диалогового окна в файле ресурсов 9

2.2. Функция диалогового окна 10

2.3. Вызов модального диалогового окна 10

2.4. Закрытие модального диалогового окна 11

2.5. Вызов немодального диалогового окна 11

2.6. Получения и занесения данных в элементы управления диалогового 11

3. Порядок выполнения работы 12

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

Приложение 14

1. Работа с реестром

Реестр – база данных, в которой регистрируется вся системная информация. Содержит системную информацию о компьютере и настройки большинства программного обеспечения. Для редактирования реестра вручную в Windows предусмотрен редактор реестра regedit.exe. Реестр содержит данные в виде разделов (ключей), которые могут содержать параметры и подразделы. Реестр можно сравнить с файловой системой, ключи с директориями, а значения с файлами. Ниже приведен рисунок, на котором в редакторе реестра открыт раздел HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Borland Shared, который содержит один параметр по умолчанию и параметр строкового типа SharedFilesDir, а также содержит подразделы Data, Image Files, MSHelp, SampleDictionary.

Порядок работы с реестром можно определить как следующую последовательность шагов:

  1. Создание или открытие раздела с помощью функции RegCreateKeyEx.

  2. Чтение параметров раздела с помощью функции RegQueryValueEx или занесение параметров с помощью функции RegSetValueEx.

  3. Закрытие раздела с помощью функции RegCloseKey.

Для удаления раздела реестра используется функция RegDeleteKey.

1.1. Создание - открытие раздела

Для создания или открытия существующего раздела используется функция RegCreateKeyEx.

LONG RegCreateKeyEx(

HKEY hKey, // дескриптор открытого раздела

LPCTSTR lpSubKey, // указатель на название подраздела

DWORD Reserved, // зарезервировано

LPTSTR lpClass, // указатель на строку – тип объекта

DWORD dwOptions, // опции

REGSAM samDesired, // тип доступа

LPSECURITY_ATTRIBUTES lpSecurityAttributes, // указатель на

//структуру безопасности

PHKEY phkResult, // указатель на результирующий раздел

LPDWORD lpdwDisposition // указатель на значение диспозиции

);

hKey - идентифицирует текущий открытый раздел или любой из следующих предопределенных разделов:

HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS

lpSubKey – указывает на строку, заканчивающуюся нулевым символом, содержащую название подраздела, который создает или открывает эта функция. Данный подраздел должен быть подразделом раздела, заданного параметром hKey. Этот параметр не может начинаться символом \ и не может быть равным NULL.

Reserved – зарезервирован, должен быть равным нулю.

lpClass – указывает на строку, заканчивающуюся нулевым символом, которая определяет класс (тип) этого раздела. Этот параметр игнорируется, если раздел уже существует

dwOptions – определяет специальные опции для раздела. В Windows 9x должно быть REG_OPTION_NON_VOLATILE - информация сохраняется в файле и восстанавливается при перезагрузке системы

samDesired – маска доступа определяет желаемый уровень безопасности для нового раздела, может быть комбинацией следующих значений.

Таблица 2.1. Маски доступа к реестру

Значение

Описание

KEY_ALL_ACCESS

Комбинация видов доступа KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, и KEY_SET_VALUE .

KEY_CREATE_LINK

Разрешение создать символическую ссылку.

KEY_CREATE_SUB_KEY

Разрешение создавать подраздели.

KEY_ENUMERATE_SUB_KEYS

Разрешение перечислять подразделы.

KEY_EXECUTE

Разрешение на чтение.

KEY_NOTIFY

Разрешение на смену нотификации.

KEY_QUERY_VALUE

Разрешение считать параметры подключа.

KEY_READ

Комбинация видов доступа KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, и KEY_NOTIFY.

KEY_SET_VALUE

Разрешение на занесение параметров.

KEY_WRITE

Комбинация видов доступа KEY_SET_VALUE и KEY_CREATE_SUB_KEY.

lpSecurityAttributes – указатель на структуру безопасности SECURITY_ATTRIBUTES, которая определяет, будет ли наследоваться, возвращаемый функцией, дескриптор раздела

phkResult – указатель на переменную, в которую помещается дескриптор открытого или созданного раздела

lpdwDisposition – указывает на переменную, которая получает одно из следующих значений

Таблица 2.2. Значения lpdwDisposition

Значение

Описание

REG_CREATED_NEW_KEY

Раздел не существовал и был создан.

REG_OPENED_EXISTING_KEY

Раздел существовал и был открыт без изменений.

В случае успешного завершения функция возвращает ERROR_SUCCESS, в противном случае ненулевой код ошибки.

Пример вызова:

if ((RegCreateKeyEx(HKEY_LOCAL_MACHINE, SubKey, NULL, NULL,

REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE, NULL,

&hKeyRes, &dwDisPos))==ERROR_SUCCESS)

{

. . .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]