Системный реестр. Архитектура системного реестра, страница 4

У подключа .Default имеются два подключа, которые следуют после подключа Your App — Report Name и Data Base.Ниже подключа User X следует только подключ Data Base. Когда в подключе User X указывается текущий пользователь, приложение обнаружит параметр настройки в подключе Data Base, но не в подключе Report Name. Приложение может всегда соблюдать это правило, считывая выбранные пользователем глобальные параметры из подключа приложения, который содержится в ключе программного обеспечения текущего пользователя, и если они не будут обнаружены, тогда поиск глобальных параметров осуществляется в аналогичном месте для пользователя, зарегистрированного в подключе .Default.Описание функций системного реестра

В табл. 19.2 сведены все функции системного реестра, а их описание следует непосредственно после таблицы.На рис. 19.3 показаны элементы системного реестра для ключа документа WordPad, порожденного ключом HKEY_CLASSES_ROOT. У него имеются следующие пять под-ключей: CLSID, Defaultlcon, Insertable, Protocol и Shell. Значение подключа CLSIDпредставляет собой идентификатор класса OLE 2.O. Значением подключа Defaultlcon является имя библиотеки пиктограмм и индекс, по которому находится данная пиктограмма. Эта информация будет использоваться командным процессором для отображения документов WordPad. Подключи Insertable и Protocol также имеют

Функиия

Назначение

RegCreateKeyEx

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

RegDeleteKey

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

RegDeleteValue

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

RegDisablePredefinedCache

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

RegEnumKeyEx

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

RegEnumValue

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

RegFlushKey

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

RegLoadKey

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

RegNotifyChangeKeyValue

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

RegOpenCurrentUser

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

RegOpenKeyEx

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

RegOverridePredefKey

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

RegQuerylnfoKey

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

RegQueryMuttiple Values

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

RegQueryValueEx

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

RegReplaceKey

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

RegRestoreKey

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

RegSaveKey

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

RegSetValueEx

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

RegUnLoadKey

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

RegCloseKey                           • Windows 98   • Windows 2000

Описание

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

Синтаксис

LONG RegCloseKey (Hkey hKey)

Параметры

hKey

HKEY: Дескриптор закрываемого ключа.

Возвращаемое значение

LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае вызывающей программе возвращается код ошибки. Функция не может быть выполнена в том случае, если ключ является недействительным либо не может быть открыт.

Включаемый файл

winreg.h

См. также

RegOpenKeyEx, RegFlushKey.

Пример

См. пример применения функции RegCreateKeyEx.

RegConneetRegistry                    Windows 98   • Windows 2000

Описание

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

Синтаксис

LONG RegConneetRegistry (LPCTSTR IpMachineName, HKEY hKey, PHKEY phkResult)

Параметры

IpMachineName

LPCTSTR: Указатель на строку, завершающуюся пустым символом и содержащую имя удаленного компьютера. Эта строка должна быть приведена в виде \\coraputername. Если для этого параметра установлено значение NULL, используется имя локального компьютера.

НКеу

HKEY: Предопределенный дескриптор системного реестра, находящегося на удаленном компьютере. При этом нельзя использовать ключи HKEY_CLASSES_ROOTn HKEY_CURRENT_USER

PhkResult

PHKEY: Указатель на переменную HKEY, которой присваивается дескриптор ключа, обозначающий предопределенный дескриптор на удаленном компьютере.

Возвращаемое значение

LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается значение ошибки.

Включаемый файл

winreg.h

См. также

RegCloseKey.

Пример

В приведенном ниже фрагменте кода показано, каким образом функция RegConnectRegistry используется для соединения с другим компьютером.

HKEY ConnectToRemote ( LPTSTR IpComputerName ,   HKEY hKey )

HKEY hRemoteKey ;

if   (RegConneetRegistry (IpComputerName,  hKey,   ShRemoteKey )  = ERROR_SUCCESS  )  return (   hRemoteKey ) ;

MessageBox( NULL,   "Could not connect to remote computer",  NULL, MBJDK   |   MB_ICONSTOP  ) ;

return (   NULL ) ;

RegCreateKeyEx                       Windows 98   *  Windows 2000

Описание

Функция  RegCreateKeyEx создает или открывает подключ указанного ключа.

Синтаксис

LONG RegCreateKeyEx(HKEY hkey, LPCTSTR IpszSubKey, DWORD dwReserved, LPTSTR IpszClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES IpSecurityAttributes, PHKEY phkResult, LPDWORD IpdwDisposition)

Параметры hkey

HKEY: Ключ, под которым предполагается создать новый подключ. Это может быть открытый ключ или один из следующих предопределенных корневых ключей верхнего уровня: HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_USERS, HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT, HKEY_PERFORMANCE DATA (Windows 2000) или HKEY_DYN_DATA (Windows 98).

IpszSebKey

LPCTSTR: Указатель на строку, завершающуюся нулевым символом и содержащую имя нового подключа. Если такой подключ уже существует, он открывается. Указанное имя подключа не должно начинаться с символа обратной косой черты('\'). В противном случае возвращается значение ERROR_BAD_PATHNAME.

dwReserved

DWORD: Это значение следует установить равным 0.

Ipsz Class

LPTSTR: Указатель на строку, завершающуюся нулевым символом и содержащую наименование класса данного ключа. Если такой подключ уже существует, параметр игнорируется.

dwOptions

DWORD: Этот параметр определяет специальные опции для хранения данных, связанных с ключом. Возможные значения этого параметра перечислены в табл. 19.3.

Таблица 19.3 Значения параметра dwOptions функции RegCreateKeyEx

Олиии хранения ланных в ключе системного реестра

Значение

REG_OPTION_BACKUP_RESTOR

(Windows NT/2000) Параметр samDes/'red игнорируется, а ключ открывается с доступом, необходимым для резервного копирования или восстановления ключа. Если в вызывающей   .,-. нити разрешены привилегии SE_BACKUP_NAME, тогда ключ открывается с доступом ACCESS_SYSTEM_SECURITY и KEY_READ. А если в вызывающей нити разрешены привилегии SE RESTORE NAME, тогда ключ открывается с доступом ACCESS_SYSTEM_SECURITY и KEY_WRITE

REG_OPT_N_WOM_VOLAnLE

В этом случае данные не являются временными, но сохраняются на диске. При перезапуске системы ключи не теряются. А ключи, которые не являются временными, сохраняются с помощью функции RegSaveKey

REG_OPTION_VOLATILE

В этом случае (только в Windows NT/2000) данные хранятся в памяти и не записываются на диск. При закрытии системы временные ключи теряются. Кроме того, временные ключи не сохраняются с помощью функции RegSaveKey. Это значение игнорируется в Windows 98, где создаются постоянные ключи и возвращается значение ERROR_SUCCESS

samDesired

REGSAM: Доступ к ключу с требуемым уровнем защиты. При этом можно использовать сочетание значений, перечисленных в табл. 19.4.

IpSecurityAttributes LPSECURITY_ATTRIBUTES: Атрибуты защиты ключа. Установленное значение NULL для этого параметра указывает на используемые по умолчанию атрибуты защиты, которые не допускают наследование дескрипторов ключей одного процесса в другом процессе. Чтобы разрешить наследование дескрипторов ключей, потребуется установить значение TRUE элемента blnheritHandle структуры. В Windows 9x этот параметр игнорируется.

Таблица 19.4 Опции доступа к ключу

Опчия доступа к ключу

Права доступа

KEY_ALL_ACCESS

Допускает определенное сочетание опций KEY QUERY VALUE, KEY ENUMERATE SUBKEYS, KEY NOTIFY, KEY_CREATE_SUBKEY, KEY_CREATE_LINK и KEY_SET_VALUE

KEY_CREATE_LWK

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

KEY_CREATE_SUBKEY

Допускает создание подключай

KEY ENUMERATE SUBKEYS

Допускает перечисление подключей

KEY_EXECUTE

Допускает чтение ключа

KEY_NOTIFY

Разрешает уведомление об изменении ключа

KEY_QUERY_VALUE

Допускает запрос значений подключей

KEY_READ

Допускает определенное сочетание опций KEY QUERY VALUE, KEY_ENUMERATE_SUBKEYS и KEY_NOTH=Y

KEY_SET_VALUE

Допускает запись значений подключей

KEY_WRITE

Допускает сочетание опций KEY SET VALUE и KEY_CREATE_SUBKEY

phkResult

PHKEY: Указатель на переменную HKEY, которой присваивается дескриптор нового подключа.

Ipdw Disposition

LPDWORD: Указатель на переменную типа DWORD, которой присваивается значение состояния подключа, указывающее на то, что подключ был создан (REG_CREATED_NEW_KEY) либо же был открыт существующий подключ (REG_OPENED_EXISTING_KEY) .

Возвращаемое значение

LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS, в противном случае — код ошибки.

Включаемый файл

winreg.h

См. также

RegDeleteKey

Пример

После выбора пользователем в приведенном ниже примере пункта меню Register! создаются следующие три элемента системного реестра: первые два — для типа документа MyDoc с командой командного процессора и используемой по умолчанию пиктограммой и третий — для расширения .MDC. При этом расширение имени файла связывается с типом документа и командой Test командного процессора. После выполнения данного примера следует воспользоваться проводником Explorer и щелкнуть правой кнопкой мыши на файле с расширением .MDC, чтобы таким образом появилось контекстное меню. В результате выполнения команды Test файл MyDoc загружается в Note Pad. Состояние системного реестра после выполнения данного примера можно оценить на основании рис. 19. 5. А на рис.  19.6 показано контекстное меню для файлов с расширением .MDC. Когда пользователь выбирает пункт меню Un- Register!, указанные выше ключи из системного реестра удаляются.