Вы на НеОфициальном сайте факультета ЭиП

На нашем портале ежедневно выкладываются материалы способные помочь студентам. Курсовые, шпаргалки, ответы и еще куча всего что может понадобиться в учебе!
Главная Контакты Карта сайта
 
Где мы?

Реклама


Приложения к лабораторным работам.

Просмотров: 3346 Автор: admin

<!--[if gte mso 9]> <!--[if gte mso 10]> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Обычная таблица"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} Приложения к лабораторным работам.

Приложение 1. API-функции работы с реестром

Общие сведения о реестре

Реестр — системная база данных Windows, предназначенная для хранения настроек. Ранние версии Windowsдля хранения настроек приложений и самой операционной системы использовали исключительно *.ini – файлы, размещённые в папках приложений или самой операционной системы. В дальнейшем разработчики ОС Windowsпредпочли вариант центраизованного хранения настроек в специальной иерархической базе данных — реестре. В современных ОС семейства Windowsбольшинство настроек хранится именно в реестре.

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

Реестр имеет иерархическую структуру. Реестр состоит из нескольких разделов, каждый из которых содержит множество ключей. Каждый ключ может содержать как конкретные значения, так и другие ключи.

 

Назначение разделов реестра следующее:

–        HKEY_CLASSES_ROOT —содерит соответствие типов файлов запускаемым приложениям и значкам дляотображения файлов, а также информацию о компонентах Windows (специальных программах, которые могут использоваться в качестве объектов внутри других программ);

–        HKEY_CURRENT_USER — содержит инфрмацию о настройках пользователя, в данный момент работающего за компьютером (является ссылкой на подраздел HKEY_USERS, имеющий такое название, соответствующий имени пользователя);

–        HKEY_LOCAL_MACHINE — содержит программные и аппаратные настройки данного компьютера;

–        HKEY_USERS — содержит настройки пользователей, учётные записи которых существуют на данном компьютере

–        HKEY_CURRENT_CONFIG — содержит информацию о текущей конфигурации системы;

–        HKEY_DYN_DATA — указывает на часть раздела HKEY_LOCAL_ MACHINE, которая нужна для Plug & Play устройств (при добавлении или удалении устройств из системы этот раздел изменяется);

Для «ручной» работы с реестром существуют специальные программы — редакоры реестра. Редактор, поставляемый вместе с ОС Windowsможно запустить, набрав в команднй строке команду «regedit». Следует отметить, что в ОС Windows 2000 использовать устаревший редактор regeditдля редактирования реестра не рекомеднуется. Для запуска современной версии редактора следует набрать команду regedt32.

Порядок работы с реестром следующий:

–        открытие ключа реестра;

–        работа с ключом реестра;

–        закрытие ключа реестра.

Для идентификации открытого ключа реестра используется уникальный числовой идентификатор — дескриптор ключа реестра. Дескриптор ключа реестра при работе с реестром аналогичен номеру файла при работе с файлами.

Если запрашиваемое действие функции работы с реестром выполнено успешно, то функцией будет возвращено значение ERROR_SUCCESS, иначе будет возвращён код ошибки. При необходимости код ошибки можно расшифровать с помощью API-функции FormatMessage.

Открытие ключа реестра

Функция RegOpenKeyEx открывает указанный существующий ключ реестра.

Параметры функции:

–        hKey – числовой код открываемого раздела реестра (может принимать значения констант, начинающихся с префикса HKEY_);

–        lpSubKey – строковая переменная, содержащая путь к открываемому ключу реестра;

–        ulOptions – зарезервированный параметр, должен быть равен нулю;

–        samDesired – содержит числовой код, соответствующий правам доступа, которые необходимы для дальнейшей работы с открытым ключом реестра. Если запрашиваемые права доступа превышают допустимые права для данного ключа реестра, ключ открыт не будет с кодом ошибки 5 («Отказано в доступе»). Могут использоваться значения следующих констант:

Ø      KEY_ALL_ACCESS — полныйдоступ;

Ø      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).

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

Закрытие ключа реестра

Функция RegCloseKey закрывает указанный дескриптор реестра, и освобождает все ресурсы, связанные с указанным дескриптором.

Параметр функции:

–        hKey – дескриптор ключа реестра, который требуется закрыть.

Обратите внимание, что после выполнения функции обращаться к дескриптору ключа реестра более нельзя, так как он перестаёт быть адекватным.

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

Запрос значения параметра ключа реестра

Функция RegQueryValueEx возвращает тип данных и значение параметра, имя которого указано, ассоциированных с открытым ключом реестра.

Параметры функции:

–        hKey – дескриптор текущего открытого ключа реестра или константа, соответствующая одному из разделов реестра (HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS);

–        lpValueName – указатель на переменную типа string, содержащую имя запрашиваемого параметра;

–        lpReserved – зарезервировано, должно быть равно нулю;

–        lpType – указатель на переменную (значение, передаваемое по ссылке), в которую будет помещено значение, соответствующее типу запрошенного параметра. Если узнавать тип хранимого значения нет необходимости, вместо указателя на переменную допускается указать нуль. Переменная в качестве значений может принимать следующие константы:

Ø      REG_BINARY – двоичные данные в любой форме;

Ø      REG_DWORD – 32-битное число;

Ø      REG_DWORD_LITTLE_ENDIAN – разновидность REG_DWORD: младший байт числа идёт последним;

Ø      REG_DWORD_BIG_ENDIAN - разновидность REG_DWORD: старший байт числа идёт последним;

Ø      REG_EXPAND_SZ – строка, которая может содержать имена переменных среды операционной системы (перменных окружения), вместо их значений (например, %PATH%). Для преобразования в формат обычной строки можно использовать функцию ExpandEnvironmentStrings;

Ø      REG_LINK – символьная ссылка;

Ø      REG_MULTI_SZ – массив строк;

Ø      REG_NONE – значение неопределённого типа;

Ø      REG_RESOURCE_LIST – список ресурсов драйверов устройств;

Ø      REG_SZ – строка символов (импа string);

–        lpData – указатель на буфер, в который будет помещёно значение запрашиваемого параметра. Если определять значение параметра не требуется, вместо аргумента можно указать нуль;

–        lpcbData – указатель на переменную, которая хранит число, соответствующее размеру буфера, указанного в качестве параметра lpData, в байтах. После выпонения функции в переменную будет помещено число, которое соответствует количеству байт, которые реально были скопированы функцией в указанный буфер. Если выделенного буфера недостаточно, функция возвращает ошибку ERROR_MORE_DATA и в переменной lpcbData сохраняет размер буфера, необходимый для сохранения значения.

Устанвока значения параметра ключа реестра

Функция RegSetValueEx сохраняет данные в параметре открытого ключа реестра. Функция также может устанавливать значение и тип для заданного параметра ключа реестра.

Параметры функции:

–        hKey – дескритор открытого ключа реестра или константа,соответствующая одному из разделов реестра;

–        lpValueName – указатель на переменную типа string, содержащую имя запрашиваемого параметра;

–        lpReserved – зарезервировано, должно быть равно нулю;

–        lpType – указатель на переменную (значение, передаваемое по ссылке), в которой указано значение, соответствующее устанавливаемому lpData

–        lpData – указатель на буфер,содержащий значение параметра;

–        cbData – размер буфера, содержащего значение параметра (на единицу больше количества символов в строке).

Значения длиной более 2048 байт рекомендуется сохранять не непосредственно в реестре, а в отдельном файле, указатель на который размещать в реестре.

Создание нового ключа реестра

Функция RegCreateKeyEx создаёт новый ключ реестра. Если указанный ключ уже существует, функция открывает указанный ключ реестра.

Параметры функции:

–        hKey – дескритор открытого ключа реестра или константа,соответствующая одному из разделов реестра;

–        lpValueName – указатель на переменную типа string, содержащую имя запрашиваемого параметра;

–        lpReserved – зарезервировано, должно быть равно нулю;

–        pClass – строка, содержащая имя класса создаваемого ключа. Мжет быть пустой строкой «». Параметр игнорируется, если ключ уже существует;

–        dwOptions – указывает спец.параметр кюча. Для выполнения лабораторной работы укажите нулевое значение;

–        samDesired – содержит числовой код, соответствующий правам доступа, которые необходимы для дальнейшей работы с открытым ключом реестра. Если запрашиваемые права доступа превышают допустимые права для данного ключа реестра, ключ открыт не будет с кодом ошибки 5 («Отказано в доступе»);

–        lpSecurityAttributes – указатель на структуру данных типа SECURITY_ATTRIBUTES. Для лабораторных работ рекомендуется всем поля структуры (всем свойствам) присвоить нулевые значения;

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

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

Ø      REG_CREATED_NEW_KEY – ключ не существовал и был создан;

Ø      REG_OPENED_EXISTING_KEY - ключ существовал и просто был открыт без изменений.

Расширение строки, содержащей переменные окружения

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

Параметры функции:

–        lpSrc – указатель на строку, которая может включать ссылки на переменные окружения в виде %имяПеременной%. Каждая такая ссылка будет заменена на текущее значение указанной переменной окружения. Правила замены точно такие же, как при использовании командной строки операционной системы. Если указанная переменная ненайдена, выражение %имяПеременной% будет оставлено без изменений;

–        lpDst – указаель на буфер – строковую переменную. В буфер будет помещена строка, содержащая внесённые изменения;

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



Популярные новости

Статистика сайта



Rambler's Top100



 
Copyright © НеОфициальный сайт факультета ЭиП