49390 (666247)

Файл №666247 49390 (Функции управления реестром Windows)49390 (666247)2016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

ФУНКЦИИ УПРАВЛЕНИЯ РЕЕСТРОМ WINDOWS

Введение

В табл.1 сведены все функции системного реестра, а описание основных следует непосредственно после таблицы.

Таблица 1 Сводка функций системного реестра

Функция

Назначение

RegCloseKey

Закрывает открытый ключ системного реестра

RegConnectRegistry

Выполняет соединение с предопределенным дескриптором системного реестра на другом компьютере

RegCreateKeyEx

Создает новый подключ

RegDeleteKey

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

RegDeleteValue

Удаляет значение из системного реестра

RegDisablePredefinedCashe

Отключает таблицу предопределенных дескрипторов системного реестра в ключе HKCU для текущего процесса

RegEnumKeyEx

Перечисляет все подключи данного ключа

RegEnumValue

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

RegFlushKey

Сразу же записывает все изменения, произведенные в системном реестре

RegLoadKey

Загружает раздел в корневой ключ, находящийся на вершине иерархии

RegNotifyChangeKeyValue

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

RegOpenCurrentUser

Открывает ключ HKCU для пользователя текущей потока

RegOpenKeyEx

Открывает существующий ключ системного реестра с расширением Win32

RegOverridePredefKey

Переопределяет переопределенный ключ системного реестра в соответствии с указанным ключом системного реестра

RegQueryInfoKey

Возвращает информацию о ключе

RegQueryMultipleValues

Выбирает тип и данные для списка имен значений

RegQueryValueEx

Возвращает значение (с расширенными типами данных Win32)

RegReplaceKey

Заменяет ключ содержимым файла при перезапуске системы

RegRestoreKey

Считывает содержимое раздела ранее сохраненный ключ

RegSaveKey

Сохраняет значения и подключи данного ключа в файле улья

RegSetValueEx

Присваивает ключу значение (с новыми типами данных)

RegUnLoadKey

Удаляет раздел из системного реестра

1. Создание и открытие ключей

Для того чтобы работать с данными реестра, приложение должно сначала создать собственный ключ или открыть ключ, созданный ранее. Для создания ключа приложению необходимо вызвать функцию RegCreateKeyEx(), которая описана в файле winreg.h так:

LONG RegCreateKeyEx (HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition)

Параметры:

hKey – хэндл ключа, под которым предполагается создать новый подключ.

lpSubKey – указатель на строку, завершающуюся нулевым символом в конце и содержащую имя нового ключа.

Reserved – резерв.

lpClass – указатель на строку, завершающуюся нулевым символом в конце и содержащую наименование класса нового ключа.

dwOptions – специальные опции для хранения данных, связанных с ключом. Задаются идентификатором с префиксом REG_OPTION_.

samDesired – доступ к ключу с требуемым уровнем защиты.

lpSecurityAttributes – атрибуты защиты ключа.

phkResult – указатель на переменную HKEY, которой присваивается хэндл нового ключа.

lpdwDisposition – указатель на переменную типа DWORD, которой присваивается значение состояния подключа (был создан или открыт).

Возвращаемое значение: если ключ создан или открыт удачно, то значение ERROR_SUCCESS. Любое другое значение является свидетельством того, что при создании или открытии ключа встретилась ошибка.

Первый аргумент - hKey -хэндл ранее открытого ключа или одно из следующих значений:

HKEY_CLASSES_ROOT;

HKEY_CURRENT_USER;

HKEY_LOCAL_MACHINE;

HKEY_USERS;

HKEY_DYN_DATA (Win 9x) или HKEY_PERFORMANCE_DATA (Win NT/2000)

При инсталляции Windows создаются пять ключей. Их имена совпадают со значениями, приведенными выше. Другими словами, эти ключи являются основой для создания иерархии ключей.

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

Ключи, находящиеся по иерархии ниже HKEY_CLASSES_ROOT, определяют типы (или классы) файлов и свойства, ассоциированные с этими классами. Свойства классов определяются только программистом. Обычно эти свойства применяются при работе приложений, использующих внедрение и связывание объектов, а также приложений, использующих среду Windows (shell applications). К примеру, при открытии файлов в Explorer'e используются свойства файлов, записанные в реестре.

Ключи, подчиненные HKEY_USERS, определяют конфигурацию по умолчанию при подключении нового пользователя на локальной машине и конфигурацию текущего пользователя.

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

Возвращаясь к аргументам функции RegCreateKeyEx(), можно сказать, что перед созданием нового ключа необходимо продумать, в какую ветвь дерева необходимо включить новый ключ. Если новый ключ необходимо создать подчиненным ключу более низкого уровня, то определенным образом можно пройти по дереву и найти тот ключ, который необходим. Кроме этого, ключ, хэндл которого указан в первом аргументе, должен быть открыт с атрибутом доступа KEY_CREATE_SUB_KEY.

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

Третий аргумент - Reserved -зарезервирован и должен быть равным нулю.

Четвертый аргумент - lpClass - указатель на строку, определяющую класс создаваемого ключа.

Очередной, пятый аргумент - dwOptions, определяет опции создаваемого ключа. Этот аргумент может принимать одно из значений:

  • REG_OPTION_VOLATILE

  • REG_OPTION_NON_VOLATILE.

В Windows 9x первое значение не используется.

Второе значение указывает, что при перезагрузке системы значение этого ключа сохраняется, т. е. информация сохраняется в файле, а не в памяти.

Следующий, шестой аргумент - samDesired, определяет маску доступа к ключу. Этот параметр представляет собой битовую шкалу и может быть комбинацией флагов, приведенных в табл.2.

Таблица 2 Флаги, составляющие маску доступа к ключу

Флаг

Описание

KEY_QUERY_VALUE

Права запрашивать данные подключен

KEY_SET_VALUE

Права устанавливать данные подключен

KEY_CREATE_SUB _KEY

Права создавать подключи

KEY_ENUMERATE_SUB_ KEY

Права перебирать подключи

KEY_NOTIFY

Права изменять нотификацию

KEY_CREATE LINK

Права создавать символическую связь

KEY_READ

(STANDARD RIGHTS READ) KEY_QUERY_VALUE | KEY_ENUMERATE SUB_KEYS | KEY_NOTIFY

KEY_WRITE

(STANDARD RIGHTS WRITE) KEY_SET_VALUE | KEY_CREATE_SUB_KEY

KEY_EXECUTE

KEY_READ

KEY_ALL_ACCESS

(STANDARD RIGHTS ALL) KEY_QUERY VALUE | KEY_SET_VALUE | KEY_CREATE _SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_CREATE_SUB_KEY | KEY_NOTIFY | KEY _CREATE_LINK

Седьмой аргумент - lpSecurityAttributes - указатель на структуру типа SECURITY_ATTRIBUTES, которая определяет атрибуты безопасности создаваемого ключа. Windows 9х не поддерживает безопасность, поэтому этот параметр игнорируется.

Туда, куда указывает восьмой аргумент - phkResult - записывается хэндл созданного ключа.

И наконец, последний, девятый аргумент - lpdwDisposition - указывает место, куда будет записана информация о том, что произошло с ключом. Дело в том, что если с помощью этой функции производится попытка создать ключ, который уже существует, то ключ не создается, а просто открывается. Поэтому приложению необходимо знать, что произошло при создании ключа.

Если ключ был создан, то в поле, определяемое lpdwDisposition, записывается значение REG_CREATED_NEW_KEY.

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

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

Для ОТКРЫТИЯ подключа системного реестра с требуемым типом доступа служит функция RegOpenKeyEx(). Эта функция не создает ключ, если он не существует. Вместо этого она возвращает код ошибки.

LONG RegOpenKeyEx (HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, REGSAM samDesired, PHKEY phkResult)

Параметры:

hKey – хэндл открываемого ключа.

lpSubKey – указатель на строку, завершающуюся нулевым символом в конце и содержащую имя нового ключа.

Reserved – резерв.

samDesired – доступ к ключу с требуемым уровнем защиты.

phkResult – указатель на переменную HKEY, которой присваивается хэндл нового ключа.

Возвращаемое значение: если ключ создан или открыт удачно, то значение ERROR_SUCCESS. Любое другое значение является ошибкой.

2. Закрытие ключей и сохранение произведенных в них изменений

Закрывается ключ с помощью функции RegCloseKey(). При этом освобождаются любые связанные с данным ключом системные ресурсы. Закрытие ключа отнюдь не вызывает задержку операций записи, происходящих непосредственно после выполнения данной функции. Синтаксис функции следующий:

LONG RegCloseKey (HKEY hKey)

Параметры:

hKey – хэндл закрываемого ключа.

Возвращаемое значение: если ключ создан или открыт удачно, то значение ERROR_SUCCESS. Любое другое значение является ошибкой.

Проблема. Дело в том, что данные из реестра на время работы с ними переписываются в кэш и записываются обратно на диск при выполнении функции RegFlushKey(). Чтобы данные, измененные во время работы программы, не были потеряны, то перед закрытием ключа следует их сбрасывать на диск. С другой стороны, у программиста может появиться соблазн сбрасывать данные на диск достаточно часто. Так как RegFlushKey() использует огромное количество системных ресурсов, то эту функцию нужно вызывать только в том случае, когда действительно в этом есть необходимость. Синтаксис функции следующий:

LONG RegFlushKey (HKEY hKey)

Параметры:

hKey – хэндл ключа, содержимое которого должно быть сброшено на диск.

Возвращаемое значение: если ключ создан или открыт удачно, то значение ERROR_SUCCESS. Любое другое значение является ошибкой.

3. Добавление данных к ключам и удаление данных из ключей

После того, как ключ создан, возникает необходимость добавить к ключу некоторые данные, которые будут использоваться программой. Для этого нужно вызвать функцию RegSetValueEx(). Эта функция устанавливает именнованное значение любого подключа системного реестра. У данного подключа может быть множество именованных значений. Синтаксис функции следующий:

LONG RegSetValueEx (HKEY hKey, LPCSTR lpszValueName, DWORD dwReserved, DWORD dwDataType, CONST BYTE* lpData, DWORD dwByte)

Параметры:

hKey – хэндл ключа, к которому добавляются данные.

lpszValueName – указатель на строку, завершающуюся нулевым символом в конце и содержащую имя строки добавляемых данных.

Reserved – резерв.

dwDataType – тип сохраняемых данных, который задается идентификатором (табл.4).

lpData– укзатель на данные, которые будут сохраняться в выбранном значении. Объем данных, сохраняемых в системном реестре, ограничивается используемым объемом памяти. Поэтому большие значения должны хранится в файлах, а имена этих файлов следует хранить в системном реестре.

Характеристики

Тип файла
Документ
Размер
218,31 Kb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

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

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6529
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее