Управление подразделами реестра

Управление подразделами реестра

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

LONG RegOpenKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult) 

Параметры

hKey — указатель на текущий открытый раздел реестра или значение дескриптора одного из предопределенных зарезервированных разделов. pHkResult — указатель на переменную типа HKEY, получающую значение дескриптора вновь открываемого раздела.

lpSubKey — указатель на строку с именем подраздела. Именем подраздела может быть путь, например: MicrosoftWindowsNTCurrentVersion. Значению NULL соответствует открытие новой копии раздела для hKey. Значение параметра ulOptions должно быть равным 0.

samDesired — маска доступа, описывающая уровень защиты нового раздела. К числу возможных значений относятся значения KEY_ALL_ACCESS, KEY_WRITE, KEY_QUERY_VALUE и KEY_ENUMARATE_SUBKEYS.

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

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

Для получения пар "имя-значение" используются две взаимно дополняющих функции: RegEnumValue и RegQueryValueEx.[18] Функция RegSetValueEx сохраняет данные различного типа в поле значения открытого раздела реестра. Описания перечисленных функций, применение которых будет проиллюстрировано примером, содержатся в этом и следующем разделах книги.

Функция RegEnumKeyEx перечисляет подразделы открытого раздела системного реестра во многом аналогично тому, как функции FindFirstFile и FindNextFile перечисляют содержимое каталогов. Эта функция извлекает имя подраздела, строку с именем класса подраздела, а также дату и время последнего изменения.

LONG RegEnumValue(HKEY hKey, DWORD dwIndex, LPTSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData) 

Значение параметра dwIndex должно устанавливаться равным 0 при первом вызове функции и увеличиваться на единицу при каждом последующем вызове. Название раздела и его размер, а также строка с именем класса и ее размер, возвращаются обычным способом. В случае успешного завершения функция возвращает значение ERROR_SUCCESS, иначе — код ошибки.

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

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

Параметры

lpSubKey — указатель на строку, содержащую имя нового подраздела, создаваемого в разделе, на который указывает дескриптор hKey.

lpClass — указатель на строку, содержащую имя класса, или объектный тип, раздела, описывающее данные, представляемые разделом. Одними из многочисленных возможных значений являются REG_SZ (строка, завершающаяся нулевым символом) и REG_DWORD (двойное слово).

Параметр dwOptions может иметь значение 0 или одно из двух взаимоисключающих значений — REG_OPTION_VOLATILE или REG_OPTION_NON_VOLATILE. Постоянно хранимая (nonvolatile) информация системного реестра сохраняется в файле на диске и не теряется после перезапуска системы. При этом временные (volatile) разделы системного реестра, хранящиеся в оперативной памяти, не будут восстановлены. 

Параметр samDesired имеет тот же смысл, что и в случае функции RegOpenKeyEx.

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

lpdwDisposition — указатель на переменную типа DWORD, значение которой говорит о том, существовал ли раздел ранее (REG_OPENED_EXISTING_KEY) или он только создается (REG_CREATED_NEW_KEY).

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

10.3. Очистка реестра

Из книги Собираем компьютер своими руками автора Ватаманюк Александр Иванович

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


Восстановление реестра

Из книги Тонкости реестра Windows Vista. Трюки и эффекты автора Клименко Роман Александрович

Восстановление реестра При работе с реестром надо соблюдать осторожность. Удаление каких-либо важных данных случайно или по незнанию может привести к краху операционной системы. Тогда спасти положение может только восстановление последней работоспособной копии.Перед


Редактирование реестра

Из книги Реестр Windows автора Климов А

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


5.1. Твикеры реестра

Из книги Системное программирование в среде Windows автора Харт Джонсон М

5.1. Твикеры реестра Существует огромное множество твикеров реестра для операционной системы Windows Vista. Кроме того, есть множество твикеров реестра для операционной системы Windows XP, которые можно применять и для Windows Vista. Описание всех этих программ не поместится даже в


5.2. Дефрагментация реестра

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

5.2. Дефрагментация реестра В классическом представлении дефрагментация реестра представляет собой тот же процесс, что и обычная дефрагментация файлов. Другими словами, выполняется дефрагментация (размещение на диске данных, относящихся к файлам реестра, в идущих друг


5.3. Очистка реестра

Из книги Реестр Windows 7 автора Климов Александр Петрович

5.3. Очистка реестра Под очисткой реестра понимается поиск и удаление неверных параметров реестра. Например, если в значении параметра указан путь, которого в вашей системе не существует, то этот параметр точно неверен, а значит, его следует


5.4. Редакторы реестра

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

5.4. Редакторы реестра Стандартный Редактор реестра операционной системы Windows Vista хорош всем, кроме одного – он стандартный. Многим людям претит мысль о том, что они используют что-то стандартное. Именно поэтому таким большим спросом пользуются сторонние редакторы


5.5. Мониторинг реестра

Из книги автора

5.5. Мониторинг реестра Registry Monitor Статус: Freeware.Размер: 271 Кбайт.Разработчик: http://technet.microsoft.com/ru-ru/sysinternals/bb896652(en-us).aspx.Программа не предназначена для внесения в реестр каких-либо изменений. Тем не менее целесообразность ее использования не вызывает сомнений, поскольку она


Настройки реестра

Из книги автора

Настройки реестра Windows Меню кнопки Пуск Избранное (Windows 98 и выше) Удаление пункта ИзбранноеЕсли вы хотите удалить пункт Избранное из меню кнопки Пуск, то откройте разделHKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrer и создайте параметр NoFavoritesMenu типа DWORD со значением, равным


Ключи реестра

Из книги автора

Ключи реестра На рис. 3.1 показана аналогия между разделами реестра и каталогами файловой системы. Каждый раздел может содержать другие разделы или последовательности пар "имя-значение". В то время как доступ к файловой системе реализуется посредством указания путей


3. Просмотр реестра

Из книги автора

3. Просмотр реестра На левой панели редактора реестра (панель разделов) отображается иерархия всех разделов реестра. На правой (панель параметров) — параметры выбранного раздела реестра. Раздел вместе со всеми подразделами называется ветвью реестра.Ваша работа с


Редактор реестра

Из книги автора

Редактор реестра Итак, если реестр – это база данных Windows, то нужен определенный инструмент для работы с данной базой. Таким инструментом в Windows является Редактор реестра. Обратите внимание, что ярлык данной программы вы не найдете на Рабочем столе, а также в меню кнопки


Удаление ветвей реестра

Из книги автора

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