Для посетителейРеклама |
Приложения к лабораторным работам.
Просмотров: 4620
<!--[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 – указывает максимальное количество символов, включая служебный символ конца строки, которое может быть помещено в буфер.
|
ПоискПопулярные новости |