- •Министерство образования и науки Российской Федерации
- •1. Работа с реестром
- •1.1. Создание - открытие раздела
- •1.2. Чтение параметров раздела реестра
- •1.3. Занесения значения параметра раздела реестра
- •1.4. Закрытие раздела
- •1.5. Удаление раздела
- •2. Диалоговые окна. Определение и назначение
- •2.1. Описание диалогового окна в файле ресурсов
- •2.2. Функция диалогового окна
- •2.3. Вызов модального диалогового окна
- •2.4. Закрытие модального диалогового окна
- •2.5. Вызов немодального диалогового окна
- •2.6. Получения и занесения данных в элементы управления диалогового
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •Приложение Файл reg_dlg.Cpp
- •Файл reg_dlg.Rc
- •Файл resource.H
Министерство образования и науки Российской Федерации
Казанский государственный технический университет
имени А.Н. Туполева
____________________________________________
Межкафедральный филиал факультета № 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.
Порядок работы с реестром можно определить как следующую последовательность шагов:
Создание или открытие раздела с помощью функции RegCreateKeyEx.
Чтение параметров раздела с помощью функции RegQueryValueEx или занесение параметров с помощью функции RegSetValueEx.
Закрытие раздела с помощью функции 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)
{
. . .