Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Функции управления реестром могут получать и устанавливать значения парамет­ров, а также создавать новые подразделы и пары "параметр—значение". Для указания существующих разделов и получения новых применяются дескрипторы разделов типа HKEY. Значения имеют определенный тип; существует несколько возможных типов, например строки, двойные слова (DWORD) и расширяемые строки, параметры кото­рых могут заменяться переменными окружения.

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

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

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

Параметры

hKey идентифицирует дескриптор открытого в данный момент раздела или одного из стандартных зарезервированных разделов;

phkResult указывает на переменную типа hkey, которая принимает дескриптор вновь открытого раздела.

lpSubKey — имя подраздела. Оно может содержать путь, например Microsoft\WindowsNT\CurrentVersion. Значение NULL вызывает открытие нового раздела-дубликата hKey. Значение ulOptions должно быть равно нулю.

samDesired — маска доступа, описывающая атрибуты безопасности нового разде­ла. Возможные значения — KEY_ALL_ACCESS, KEY_WRITE, KEY_QUERY_VALUE и

KEY_ENUMERATE_SUBKEYS.

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

Чтобы получить имена подразделов, следует указать дескриптор раздела в функции RegEnumKeyEx.

Существуют также функции, предназначенные для получения пар "параметр-значение": RegEnumValue и RegQueryValueEx. Функция RegSetValueEx записыва­ет типизированные данные в поле значения открытого раздела.

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

LONG RegEnumKeyEx (HKEY hKey, DWORD dwIndex,

LPTSTR lpMame, LPDWORD lpcbName, LPDWORD lpReserved,

LPTSTR lpClass, LPDWORD lpcbClass,

PFILETIME lpftLastWriteTime)

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

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

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 — либо нуль, либо одно из взаимно исключающих значений:

REG_OPTION_VOLATILE или REG_OPTION_NON_VOLATILE. Постоянная (non-volatile) информация реестра хранится в файле и восстанавливается при перезапуске системы. Непостоянные разделы хранятся в памяти и не восстанавливаются.

samDesired — то же значение, что и в RegOpenKeyEx.

lpSecurityAttributes может иметь значение NULL или указывать на атрибуты безопасности. Возможные права доступа выбираются из значений, указанных для samDesired.

lpdwDisposition указывает на значение DWORD, которое отмечает, существовал ли раздел раньше (REG_OPENED_EXISTING_KEY) или он создан вновь (REG_CREATED_NEW_KEY).

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





Дата публикования: 2015-11-01; Прочитано: 303 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...