Рисунок 19.7
Пример применения функции RegEnumEx.нет данный ключ, после чего загрузятся подключи расширенного ключа. Результаты выполнения данного примера показаны на рис. 19.7.См. \local-sources\chapl9\19-02.txt
IpcdwName |
LPDWORD: Указатель на значение типа DWORD, которое содержит размер буфера IpszName. Система пытается скопировать в этот буфер указанное число символов в имени подключа. В это число должен быть включен 1 байт для нулевого символа, завершающего строку с именем подключа. После вызова содержимое по указанному адресу заменяется числом символов, фактически скопированных в строку IpszName. Следует заметить, что нулевой символ, завершающий данную строку, при этом не учитывается. |
|||||||||||||||
IpdwReserved |
LPDWORD: Зарезервировано для последующего применения. Для этого параметра должно быть установлено значение NULL. |
|||||||||||||||
Ipsz ClassName |
LPTSTR: Указатель на буфер, в который поступает имя класса подключа. Количество символов, скопированных в этот буфер, хранится в параметре IpcdwClassName. Если имя класса не запрашивается, тогда значение параметра может быть установлено в NULL. |
|||||||||||||||
Ipcdw ClassNamt |
? LPDWORD: Указатель на значение типа DWORD, которое содержит длину буфера IpcdwClassName с именем класса подключа. Система пытается скопировать в этот буфер указанное число символов имени класса подключа. В это число должен быть включен 1 байт для нулевого символа, завершающего строку с именем класса подключа. После вызова содержимое по указанному адресу заменяется числом символов, фактически скопированных в строку IpcdwClassName. Следует заметить, что при этом не учитывается пустой символ, завершающий данную строку. Для рассматриваемого параметра может быть установлено значение NULL, если установлено значение NULL параметра IpcdwClassName. |
|||||||||||||||
pftLastQaugtd |
PFILETIME: Указатель на переменную типа FILETIME, которой присваивается дата и время последней операции записи в данный подключ. Структура типа FILETIME содержит 64-разрядное значение, которое представляет собой число тактов через каждые 100 не, начиная с 1 января 1601 г. |
|||||||||||||||
Возвращаемое значение |
LONG: Если следующий подключ найден, тогда возвращается значение ERROR_SUCCESS. А если перечисление окажется неудачным, тогда возвращает код ошибки. Если же возвращается значение ERROR_NO_MORE_ITEMS, это значит, что подключен у данного ключа больше нет. |
|||||||||||||||
Включаемыйфайл |
winreg.h |
|||||||||||||||
См. также |
RegEnumValue, RegOpenKeyEx. |
|||||||||||||||
Пример |
В приведенном ниже примере создается окно с элементом управления древовидным представлением. Когда пользователь выбирает пункт меню Test!, содержимое дерева ключа HKEY_LOCAL_MACHINE в системном реестре перечисляется и размещается в корректном иерархическом порядке в рамках древовидного представления. При этом становится доступной также нить, в которой ожидаются любые изменения в ключе HKEY_LOCAL_MACHINE. Если подобные изменения обнаружены, тогда содержимое древовидного представления обновляется для отражения произошедших изменений. Ради упрощения данного примера все дерево загружается в элемент управления древовидным представлением. В более подходящей реализации рассматриваемого примера обычно перечисляются лишь ключи верхнего уровня до тех пор, пока пользователь не развер- |
|||||||||||||||
RegEnumValue • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegEnumValue перечисляет значения указанного ключа, открытого в системном реестре. Эта функция при каждом вызове копирует наименование одного индексированного значения, а также блок данных для ключа. Для выборки первого значения функция RegEnumValue вызывается из приложения с установленным значением 0 параметра dwValue Index. При последующих вызовах данной функции в приложении осуществляется приращение на 1 значения параметра dwValuelndex. Перечисление завершается в том случае, когда возвращается значение ERROR_NO_MORE_ITEMS. |
|||||||||||||||
Синтаксис |
LONG RegEnumValue(HKEY hKey, DWORD dwValuelndex, LPTSTR IpszValue, LPDWORD IpcdwValue, LPDWORD IpdwReserved, LPDWORD IpdwType, LPBYTE IpDataBuffer, LPDWORD IpcdwDataBuffer) |
|||||||||||||||
Параметрй |
||||||||||||||||
hKey |
HKEY: Открытый ключ, значения которого перечисляются. Это может быть открытый ключ либо один из предопределенных ключей, приведенных в табл. 19.1. |
|||||||||||||||
dwValuelndex |
DWORD: Индекс перечисляемого значения. Для перечисления всех значений следует установить значение 0 параметра dwValuelndex перед первым вызовом рассматриваемой функции. Затем потребуется выполнить приращение индекса перед каждым последующим вызовом данной функции. |
|||||||||||||||
IpszValue |
LPTSTR Указатель на буфер, в который поступает имя указанного выше значения. |
|||||||||||||||
Ipcdw Value |
LPDWORD: Указатель на значение типа DWORD, определяющее количество запрашиваемых байтов (включая и завершающий строку символ), сохраняемых после возврата из рассматриваемой функции в буфере, на который указывает параметр IpcdwValue. После вызова данной функции этот параметр определяет число фактически сохраненных байтов (кроме завершающего строку символа). |
|||||||||||||||
IpdwReserved |
LPDWORD: Зарезервировано. Для этого параметра следует установить значение NULL. |
|||||||||||||||
IpdwType |
LPDWORD: Указатель на значение типа DWORD, которое принимает тип данных, присущий перечисляемому значению. Типы данных, поддерживаемых в Win32, сведены в табл. 19.5. Если тип данных не требуется, тогда в данном поле можно установить значение NULL. |
|||||||||||||||
IpDataBuffer |
LPBYTE: Указатель на буфер, в который поступает содержимое перечисляемого значения. |
|||||||||||||||
IpcdwDataBuffer |
LPDWORD: Указатель на значение типа DWORD, которое содержит число байтов в буфере IpDataBuffer. Это может быть пустое значение NULL, если значение параметра IpDataBuffer также равно NULL. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. А значение ERROR_NO_MORE_VALUES возвращается в том случае, если значений для данного подключа больше нет. |
|||||||||||||||
Включаемыйфайл |
winreg.h |
|||||||||||||||
См. также Пример |
RegEnumKeyEx, RegSetValueEx, RegQueryValue.См. пример применения функции RegEnumKeyEx. |
|||||||||||||||
Таблица 19.5 Типы данных системного реестра |
||||||||||||||||
Тип данных системного реестра |
Описание |
|||||||||||||||
REG_BINARY |
Двоичные данные в любой форме |
|||||||||||||||
REG_DWORD |
32-разрядное число в собственном формате данной системы |
|||||||||||||||
REG_DWORD_BIG_ENDIAN |
32-разрядное число в формате с расположением байтов в обратном порядке. В этом формате старший байт слова следует по порядку после младшего байта. |
|||||||||||||||
REG_DWORDJJTTLE_ENDIAN |
32-разрядное число в формате с расположением байтов в прямом порядке. В этом формате старший байт слова следует по порядку перед младшим байтом. |
|||||||||||||||
REG_EXPAND_SZ |
Строка, завершающаяся пустым символом и содержащая нерасширяемые ссылки на переменные окружения (например, %РАТН%). В Windows 95 допускается сохранение подобных строк, однако они автоматически не расширяются |
|||||||||||||||
REG_FULL_RESOURCE_DESCRIPTOR |
Описание аппаратных средств, содержащихся в списке имеющихся ресурсов |
|||||||||||||||
REGJ.INK |
Символическая связь с другим ключом |
|||||||||||||||
REG_MULTI_SZ |
Список незавершенных строк, которые завершаются дополнительным пустым символом |
|||||||||||||||
REG_NONE |
Неопределенный тип |
|||||||||||||||
REG_QWORD |
64-разрядное число |
|||||||||||||||
REG_aWORDJJTTLE_ENDIAN |
64-разрядное число в формате с расположением байтов в прямом порядке. То же, что и REG_QWORD |
|||||||||||||||
REG_RESOURCE_LIST |
Список ресурсов с драйверами устройств |
|||||||||||||||
REG_RESOURCE_REQUIREMENT_LIST |
Список требований к ресурсам |
|||||||||||||||
REG_SZ |
Строка, завершающаяся пустым символом |
|||||||||||||||
ReqFlushKey • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegFlushKey дает системе команду на немедленное выполнение записи на диск указанного ключа, а также всех его подключен и значений. Необходимость в вызове этой операции возникает только в том случае, если в приложении требуется немедленная запись произведенных обновлений. По умолчанию система будет сбрасывать на диск содержимое системного реестра после закрытия каждого ключа и перед собственным закрытием, однако в структуре системного реестра используются оптимизированные буферы, поэтому внесенные изменения могут быть и не записаны немедленно. Тем не менее, чрезмерное использование рассматриваемой функции может оказать отрицательное влияние на производительность системы. |
|||||||||||||||
Синтаксис |
LONG RegFlushKey(HKEY hKey) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Ключ, содержимое которого должно быть сброшено на диск. Это может быть дескриптор открытого ключа либо одного из предопределенных ключей HKEY CLASSES ROOT, HKEY CURRENT USER, HKEYJJSERS или HKEY_LOCAL_MACHINE |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegCloseKey. |
|||||||||||||||
Пример |
Когда пользователь выбирает в приведенном ниже примере опцию Test!, создается ключ и отображается окно сообщения. После выбора пользователем кнопки ОК в окне сообщения, содержимое нового ключа сбрасывается на диск за счет вызова функции RegFlushKey. |
|||||||||||||||
См. \local-sources\chapl9\19-03 . txt |
||||||||||||||||
ReqLoadKey • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegLoadKey создает подключ, располагаемый ниже ключа HKEY_USER или HKEY_LOCAL_MACHINE, содержимое которого загружается из указанного файла раздела в данный подключ. Раздел системного реестра представляет собой совокупность ключей, подключей и значений, сохраняемых в едином файле, а также в файле журнала регистрации с расширением .log. Для создания разделов следует использовать функцию RegSaveKey. |
|||||||||||||||
Синтаксис |
LONG RegLoadKey (HKEY hKey, LPCTSTR IpszSubKey, LPCTSTR IpszHle) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Родительский ключ загружаемого раздела. Это может быть ключ HKEY_USER или HKEY_LOCAL_MACHINE либо значение, возвращаемое функцией RegConnectRegistry (т.е. узел системного реестра, находящегося на другой машине). |
|||||||||||||||
IpszSubKey |
LPCTSTR: Указатель на строку, которая завершается пустым символом и содержит имя подключа. |
|||||||||||||||
IpszFile |
LPCTSTR: Указатель на строку, которая завершается нулевым символом и содержит имя файла раздела с данными системного реестра для нового подключа. Следует заметить, что в файловой системе FAT в имени файла может отсутствовать расширение. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, тогда возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegSaveKey, RegUnLoadKey, RegRestoreKey, RegDeleteKey. |
|||||||||||||||
Пример |
В приведенном ниже примере создается меню, состоящее из следующих четырех пунктов: Save, Load, Unload и Restore. При выборе пункта Save создаются элементы ключа, которые затем сохраняются в виде раздела. В результате выбора пункта Load раздел загружается из файла. При выборе пункта Unload ключ удаляется, а в результате выбора пункта Restore восстанавливается предыдущее содержимое ключа. (Примечание: функция RegRestoreKey в Windows 9.x не поддерживается.) |
|||||||||||||||
См. \local-sources\chapl9\19-04.txt |
||||||||||||||||
RegNotifyChanqeKevValue • Windows 98 ф Windows 2000 |
||||||||||||||||
Описание |
Функция RegNotifyChangeKeyValue указывает момент изменения ключа системного реестра и любых его подключей. Функция RegNotifyChangeKeyValue действует в синхронном либо в асинхронном режиме в зависимости от значения параметра bAsynchronous. |
|||||||||||||||
Синтаксис |
LONG RegNotifyChangeKeyVaIue(HKEY HKey, BOOL bWatchSubtree, DWORD dwNotifyFilter, HANDLE hE vent, BOOL bAsynchronous) |
|||||||||||||||
Параметры |
||||||||||||||||
НКеу |
HKEY: Текущий открытый ключ либо любое из значений дескрипторов предопределенных ключей, приведенных в табл. 19.1. |
|||||||||||||||
bWatchSubtree |
BOOL: Для отслеживания за изменениями в ключе или в любых его под-ключах потребуется установить значение TRUE данного параметра, а для сообщения об изменениях в ключе — значение FALSE. |
|||||||||||||||
dwNotifyFilter |
DWORD: Совокупность признаков, которые управляют порядком выдачи сообщения о конкретных изменениях. При этом может быть указано определенное сочетание значений, перечисленных в табл. 19.6. |
|||||||||||||||
h Event |
HANDLE: Дескриптор события, которое сигнализирует о том, когда в ключе происходят изменения. Если установлено значение FALSE параметра bAsynchronous, рассматриваемый параметр игнорируется. |
|||||||||||||||
BAsynchronous |
BOOL: Для выполнения рассматриваемой функции в асинхронном режиме и немедленного возврата из нее для данного параметра следует установить значение TRUE. Когда изменения в ключе происходят в указанном режиме, о них сигнализирует дескриптор события, хранящийся в параметре hEvent. Если же установлено значение FALSE данного параметра, тогда рассматриваемая функция выполняется в синхронном режиме и возврат из нее не происходит до тех пор, пока в системном реестре не произойдет изменение. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, тогда возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegDeleteKey, RegCreateKey. |
|||||||||||||||
Пример |
См. пример применения функции RegEnumKeyEx. |
|||||||||||||||
Таблица 19.6 Значения параметра dwNotifyFilter функции RegNotifyChangeKeyValue |
||||||||||||||||
Значение |
Что означает |
|||||||||||||||
REG_NOTIFY_CHANGE_ATTRIBUTES |
Изменения любых атрибутов, которые происходят в ключе либо в его подключах |
|||||||||||||||
REG_NOTIFY_CHANGE_LAST_SET |
Изменения, которые произошли после выполнения последней операции записи в ключе либо его подключах |
|||||||||||||||
REG_NOTIFY_CHANGE_NAME |
Любые изменения, которые произошли в именах ключей, а также в результате создания или удаления наименований ключей |
|||||||||||||||
REG_NOTIFY_CHANGE_SECURITY |
Изменения в дескрипторе защиты ключа или его подключей |
|||||||||||||||
RegOpenCurrentUser • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegOpenCurrentUser осуществляет выборку дескриптора ключа HKEY_CURRENT_USER для пользователя, права которого заимствует текущая нить. При этом ключ HKEY_CURRENT_USER буферизуется для всех нитей, участвующих в данном процессе. Если процесс заимствует права нескольких пользователей, тогда функция RegOpenCurrentUser разрешает нити доступ к соответствующему ключу. |
|||||||||||||||
Синтаксис |
LONG RegOpenCurrentUser(REGSAM samDesired, PHKEY phkResult) |
|||||||||||||||
Параметры |
||||||||||||||||
samDesired |
REGSAM: Маска доступа, которая определяет требуемые параметры доступа к ключу. При этом можно использовать определенное сочетание значений из табл. 19.4. |
|||||||||||||||
phkResult |
PHKEY: Указатель на переменную HKEY, которой присваивается дескриптор открытого ключа. Когда дескриптор окажется уже ненужным, для его закрытия потребуется вызвать функцию RegCloseKey. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegCloseKey. |
|||||||||||||||
RegOpenKeyEx • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegOpenKeyEx открывает подключ системного реестра с требуемым типом доступа. В отличие от функции RegCreateKeyEx, функция RegOpenKeyEx не создает ключ, если он не существует. Вместо этого она возвращает код ошибки. По завершении работы с данным ключом системного реестра в приложении для его закрытия следует использовать функцию RegCloseKey. |
|||||||||||||||
Синтаксис |
LONG RegOpenKeyEx(HKEY hKey, LPCTSTR IpszSubKey, DWORD dwReserved, REGSAM samDesired, PHKEY phkResult) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Указатель на ключ, который яштяется родительским ключом открываемого подключа. Это может быть любой открытый ключ либо один из предопределенных подключей, перечисленных в табл. 19.1. |
|||||||||||||||
IpszSubKey |
LPCTSTR: Указатель на строку, завершающуюся пустым символом и содержащую имя открытого подключа. |
|||||||||||||||
dwReserved |
DWORD: Зарезервировано. Для этого параметра следует установить значение 0. |
|||||||||||||||
samDesired |
REGSAM: Маска доступа с требуемым уровнем защиты (см. табл. 19.4). |
|||||||||||||||
phkResultВозвращаемое значение |
PHKEY: Указатель на место хранения дескриптора данного ключа. LONG: Если выполнение функции оказывается успешным, тогда возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegCloseKey. |
|||||||||||||||
Пример |
См. пример применения функции RegCreateKeyEx |
|||||||||||||||
RegOverridePredefKey • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegOverridePredefKey переопределяет предопределенный ключ системного реестра в соответствии с указанным ключом системного реестра. Эту функцию полезно использовать в программах установки, в которых возникает потребность в переназначении элементов системного реестра, формируемых при регистрации элементов управления ActiveX в другом месте. Это дает программе установки возможность определить, какие именно элементы системного реестра создавались при регистрации элемента управления ActiveX. |
|||||||||||||||
Синтаксис |
LONG RegOverridePredefKey(HKEY hKey, HKEY hNewKey,) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Указатель на один из предопределенных ключей, перечисленных в табл. 19.1. |
|||||||||||||||
hNewKey |
HKEY: Указатель на предопределенный или открытый в данный момент ключ. При этом ключ hKey переопределяется в соответствии с ключом hNewKey. Переназначение применяется только по отношению к текущему процессу. Если данный параметр принимает значение NULL, рассматриваемая функция восстанавливает используемое по умолчанию назначение ключей. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
RegQuerylnfoKey • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegQuerylnfoKey возвращает информацию, которая описывает данный ключ системного реестра. Для этого необходимо иметь доступ типа KEY_QUERY_VALUE, который указывается в дескрипторе данного ключа. |
|||||||||||||||
Синтаксис |
LONG RegQueryInfoKey(HKEY hKey, LPTSTR IpClass, LPDWORD IpdwClass, LPDWORD IpdwReserved, LPDWORD IpdwSubKeys, LPDWORD IpdwMaxSubKey, LPDWORD IpdwMaxClass, LPDWORD IpdwValues, LPDWORD IpdwMaxValueName, LPDWORD IpdwMaxValueData, LPDWORD IpdwSecurityDesc, PFILETIME IpftLastWriteTime) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Указатель на ключ, который является родительским ключом открываемого подключа. Это может быть любой открытый ключ либо один из предопределенных ключей, перечисленных в табл. 19.1. |
|||||||||||||||
IpClass |
LPTSTR: Указатель на буфер, в который поступает имя класса данного ключа. |
|||||||||||||||
Ipdw Class |
LPDWORD: Указатель на значение типа DWORD, определяющее размер буфера, на который указывает параметр IpClass до вызова данной функции. В этот размер входит и завершающий строку нулевой символ. При возврате из функции значение параметра IpdwClass хранит количество байтов, скопированных в буфер IpClass, При этом завершающий строку нулевой символ в возвращаемое число байтов не входит. Если в буфере оказывается недостаточное количество символов, генерируется ошибка типа ERROR_MORE_DATA, а содержимое параметра IpdwClass указывает, сколько байтов при этом требуется. |
|||||||||||||||
Ipdw Reserved |
LPDWORD: Зарезервировано. Для этого параметра следует установить значение NULL. |
|||||||||||||||
IpdwSubKeys |
LPDWORD: Указатель на значение типа DWORD, которое принимает число подключей для указанного ключа hKey. |
|||||||||||||||
IpdwMaxSubKey |
LPDWORD: Указатель на значение типа DWORD, которое принимает длину самого длинного имени любого из подключей указанного ключа. В эту длину не входит завершающий строку нулевой символ. |
|||||||||||||||
IpdwMaxClass |
LPDWORD: Указатель на значение типа DWORD, которое принимает длину самого длинного имени класса любого из подключей указанного ключа. В эту длину не входит завершающий строку нулевой символ. |
|||||||||||||||
IpdwValues |
LPDWORD: Указатель на значение типа DWORD, которое принимает определенное число значений для указанного ключа. |
|||||||||||||||
IpdwMax ValueNameLPDWORD: Указатель на значение типа DWORD, которое принимает количество символов в самом длинном имени любого из значений. В эту длину не входит завершающий строку нулевой символ. |
||||||||||||||||
IpdwMax ValueData LPDWORD: Указатель на значение типа DWORD, которое принимает число символов в самом длинном компоненте данных любого значения ключа. |
||||||||||||||||
LpdwSecurityDesc LPDWORD: Указатель на значение типа DWORD, которое принимает количество байтов дескриптора защиты ключа. |
||||||||||||||||
IpftLast WriteTime PFILETIME: Указатель на структуру FILETIME, которая хранит время последнего видоизменения ключа или любого из его значений. Структу-, pa FILETIME содержит 64-разрядное значение, которое представляет собой число временных интервалов в 100 не между указанным временем и датой 1 января 1601 г. Определение структуры PFILETIME приведено в описании функции CompareFileTime, рассмотренной в главе 17. |
||||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. Если же возвращается значение ERROR_MORE_DATA, необходимо увеличить размер буфера IpClass. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegEnumKeyEx, RegEnumValue. |
|||||||||||||||
Пример |
См. пример применения функции RegEnumKeyEx. |
|||||||||||||||
RegQueryMultipleValues • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegQueryMultipleValues осуществляет выборку типа данных для списка имен значений, связанных с открытым ключом системного реестра. Эта функция дает приложению возможность осуществить запрос одного или более значений ключа с использованием единственного вызова данной функции. Если ключ является статическим, тогда система предоставляет все его значения. Во избежание чрезмерной сериализации объем возвращаемых данной функцией совокупных данных не должен превышать 1 Мб. Если же целевой ключ является динамическим, тогда источником данных должны быть предоставлены все его значения. Это означает, что источник данных должен заполнять буфер результатов синхронно, обеспечивая при этом согласованное представление всех значений в буфере и тем самым исключая чрезмерную сериализацию. Во время вызова рассматриваемой функции источник данных может предоставить в лучшем случае не более 1 Мб выходных данных. Эта функция поддерживается и в удаленном режиме, а следовательно, требуемый ключ может находиться на удаленном компьютере. |
|||||||||||||||
Синтаксис |
LONG RegQueryMultipleValues(HKEY hKey, PVALENT val list, DWORD num_vals, LPSTR IpValueBuf, LPDWORD IpdwTotSize) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Открытый в настоящий момент ключ или значения дескрипторов любого из предопределенных зарезервированных ключей: HKEY CLASSES ROOT, HKEY CURRENT USER, HKEY_LOCAL_MACHINE или HKEY_USERS. |
|||||||||||||||
valjist |
PVALENT: Адрес массива структур типа VALENT, в которых описывается один или более элементов выбираемых значений. Во время ввода член ve_valuename каждой структуры должен содержать указатель на имя выбираемого значения. Рассматриваемая функция не может быть выполнена, если любое из указанных значении отсутствует в данном ключе. А при успешном ее выполнении каждый элемент массива содержит информацию об указанном значении. См. также приведенное ниже определение структуры типа VALENT. |
|||||||||||||||
num_vals |
DWORD: Количество элементов массива val_list. |
|||||||||||||||
IpValueBuf |
LPSTR: Указатель на буфер, в который поступают данные для каждого значения. Если значение данного параметра установлено в NULL, выполнение рассматриваемой функции завершается успешно и при этом возвращается требуемый размер буфера в байтах, определяемый параметром IpdwTotSize. |
|||||||||||||||
IpdwTolSize |
LPDWORD: Указатель на значение DWORD, которое определяет размер в байтах буфера, заданного параметром IpValueBuf. Если значение параметра Ip ValueBuf равно NULL, возвращается размер буфера в байтах, который требуется для выборки данных. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, тогда возвращается значение ERROR_SUCCESS. В противном случае возвращается значение ERROR_CANTREAD, если источник данных динамического ключа оказывается недоступным. Если же буфер оказывается слишком мал, тогда возвращается значение ERROR_MORE_DATA В этом случае параметр IpdwTotSize принимает значение требуемого размера либо значение ERROR_TRANSFER_TOO_LONG, если объем запрашиваемых данных (т.е. размер, определяемый суммой двух параметров val_list + IpdwTotSize) превышает предел в 1 Мб. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
ReQueryValueEx. |
|||||||||||||||
Определение структуры VALENT typedef struct value_ent { LPTSTR ve valuename; DWORD ve valuelen; DWORD ve valueptr; DWORD ve type; } VALENT; |
||||||||||||||||
Члены структуры |
||||||||||||||||
ve_valuename |
LPSTR Указатель на строку, завершающуюся нулевым символом и содержащую имя выбираемого значения. |
|||||||||||||||
ve_yaluelen |
DWORD: Размер в байтах данных, на которые указывает параметр ve_valueptr. |
|||||||||||||||
ve_valueptr |
DWORD: Указатель на данные элемента выбираемого значения. Это указатель на данные значения, возвращаемые в буфере IpValueBuf, заполняемом с помощью функции RegQueryMultipleValues. |
|||||||||||||||
ve_type |
DWORD: Тип элемента выбираемого значения. Это может быть одно из значений, перечисленных в табл. 19.5. |
|||||||||||||||
Пример |
В приведенном ниже примере выполняется запрос из системного реестра первых десяти элементов, отмеченных в Windows Explorer. Затем эти элементы размещаются в элементе управления списочным представлением, как только пользователь выбирает пункт меню Test! Все элементы сформированного списка запрашиваются при помощи единственного вызова функции RegQueryMultipleValues. |
|||||||||||||||
См. \local-sources\chapl9\19-05.txt |
||||||||||||||||
RegQueryValueEx • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegQueryValueEx возвращает тип и данные для указанного имени значения, связанного с открытым ключом системного реестра. |
|||||||||||||||
Синтаксис |
LONG RegQueryValueEx(HKEY hKey, LPSTR IpszValueName, LPDWORD IpdwReserved, LPDWORD IpdwType, LPBYTE IpData, LPDWORD IpdwData) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Открытый ключ, который содержит запрашиваемое значение. Это может быть любой открытый ключ либо один из предопределенных ключей, перечисленных в табл. 19.1. |
|||||||||||||||
IpszValueName |
LPSTR: Указатель на строку, завершающуюся нулевым символом и содержащую имя считываемого значения. |
|||||||||||||||
IpdwReserved |
LPDWORD: Зарезервировано. Для этого параметра следует установить значение NULL. |
|||||||||||||||
IpdwType |
LPDWORD: Тип данных, сохраняемых в виде значения. Типы данных, которые могут быть сохранены в виде значений, перечислены в табл. 19.5. |
|||||||||||||||
IpData |
LPBYTE: Указатель на буфер, в который поступают данные, сохраняемые в виде значения. |
|||||||||||||||
IpdwData |
LPDWORD: Указатель на переменную типа DWORD, которая содержит количество байтов в буфере IpData. После вызова рассматриваемой функции система устанавливает в этой переменной фактическое количество скопированных байтов. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.li |
|||||||||||||||
См. также |
RegQuerylnfoKey, RegSetValueEx. |
|||||||||||||||
Пример |
Когда пользователь выбирает в примере опцию Test!, выполняется запрос имени пиктограммы, используемой по умолчанию для отображения файлов формата RTF, из системного реестра и отображение этого имени в окне сообщения. |
|||||||||||||||
Си. \local~sourcas\chapl9\19~06.txt |
||||||||||||||||
RegReplaceKey • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegReplaceKey заменяет файл, в котором хранится ключ и все его подключи, на другой файл, благодаря чему при последующем запуске системы ключ и его подключи получат значения из нового файла. В |
|||||||||||||||
Windows 2000 у вызывающего эту функцию процесса должны быть привилегии типа SE'_RESTORE_NAME. |
||||||||||||||||
Синтаксис |
LONG RegReplaceKey(HKEY hKey, LPCTSTR IpSubKey, LPCTSTR IpNewFile, LPCTSTR IpOldFile) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Обозначает открытый в настоящий момент ключ. Это может быть любой открытый ключ либо один из предопределенных ключей, перечисленных в табл. 19.1. |
|||||||||||||||
IpSubKey |
LPCTSTR Указатель на строку, завершающуюся нулевым символом и содержащую имя ключа, подключи и значения которого заменяются с помощью рассматриваемой функции. Данный ключ должен быть подключом ключа, определяемого параметром hKey. Для данного параметра можно установить значение NULL. |
|||||||||||||||
IpNewFile |
LPCTSTR Указатель на строку, завершающуюся нулевым символом и содержащую имя файла с зарегистрированной в системном реестре информацией. Как правило, подобный файл создается с помощью функции RegSaveKey. При использовании файловой системы FAT в имени файла может отсутствовать расширение. |
|||||||||||||||
IpOMFile |
LPCTSTR: Указатель на строку, завершающуюся нулевым символом и содержащую имя файла, в который поступает резервная копия заменяемой информации из системного реестра. При использовании файловой системы FAT в имени файла может отсутствовать расширение. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается ненулевой код ошибки, определенный в файле WINERROR.H. Для получения обобщенного описания данного типа ошибки следует воспользоваться функцией FormatMessage с установленным признаком FORMAT_MESSAGE_FROM_SYSTEM. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegConnectRegistry, RegDeleteKey, RegLoadKey, RegRestoreKey. |
|||||||||||||||
RegRestoreKey • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegRestoreKey восстанавливает из файла значения ключа и его подключей. Восстановленные значения полностью заменяют в памяти содержимое ключа (в том числе и всех его подключей). Такая замена носит разрушительный характер, в результате чего из всех данных о ключе сохраняется только его имя. Удалению подлежат только те подключи и значения, которые существовали в восстанавливаемом узле, а не в копии соответствующего файла. Эта операция не сможет быть выполнена, если окажется открытым любой подключ данного ключа. |
|||||||||||||||
Синтаксис |
LONG RegRestoreKey(HKEY hKey, LPCTSTR IpszFile, DWORD dwFlags) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Любой открытый ключ либо один из предопределенных ключей, перечисленных в табл. 19.1. |
|||||||||||||||
IpszFile |
LPCTSTR Указатель на строку, завершающуюся нулевым символом и содержащую имя файла раздела, в котором находятся данные системного |
|||||||||||||||
реестра для нового ключа. Указанный файл раздела создается с использованием функции RegSaveKey. Следует заметить, что при использовании файловой системы FAT в имени файла может отсутствовать расширение. |
||||||||||||||||
dwflags |
DWORD: для этого параметра следует установить одно из значений, перечисленных в табл. 19.7. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegLoadKey, RegUnLoadKey, RegDeleteKey, RegSaveKey. |
|||||||||||||||
Пример |
См. пример применения функции RegLoadKey. |
|||||||||||||||
Таблица 19.7 Значения параметра dwFlags функции RegRestoreKey |
||||||||||||||||
Значение |
Что обозначает |
|||||||||||||||
REG_FORCE_RESTORE |
Операция восстановления выполняется даже в том случае, если дескрипторы открытых ключей существуют на уровне или ниже того места в иерархии системного реестра, на которое указывает параметр hKey |
|||||||||||||||
REG_NO_LAZY_FLUSH |
Содержимое ключа или раздела, на который указывает параметр hKey, не будет сбрасываться на диск в отложенном или автоматическом режиме через регулярные промежутки времени |
|||||||||||||||
REG_REFRESH_HIVE |
Местоположение раздела, на который указывает параметр hKey, будет восстановлено сразу же после выполнения последней операции сброса его содержимого на диск. При этом содержимое раздела не должно сбрасываться на диск в отложенном режиме |
|||||||||||||||
REG_WHOLE_HIVE_VOLATILE |
В этом случае создается информация, временно выделенная из системного реестра или раздела. При этом ключ, обозначаемый параметром hKey, должен иметь значение HKEY_USERS или HKEY_LOCAL_MACHINE |
|||||||||||||||
RegSaveKey • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegSaveKey сохраняет содержимое системного реестра в файле раздела, который можно загрузить с использованием функций RegLoadKey и RegRestoreKey. |
|||||||||||||||
Синтаксис |
LONG RegSaveKey(HKEY hKey, LPCTSTR IpszFile, LPSECURITY_ATTRIBUTES IpsaSecurity) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Любой открытый в настоящий момент ключ либо дескриптор одного из предопределенных зарезервированных ключей, перечисленных в табл. 19.1. |
|||||||||||||||
LpszFile |
LPCTSTR: Указатель на строку, завершающуюся нулевым символом и содержащую имя файла, в котором находятся данные системного много реестра для нового ключа. Следует заметить, что при использовании файловой системы FAT в имени файла может отсутствовать расширение либо его нельзя использовать в функциях RegLoadKey и RegRestoreKey. |
|||||||||||||||
IpsaSecurity- |
LPSECUR1TY_ATTRIBUTES: Атрибуты защиты нового файла. Если для данного параметра установлено значение NULL, тогда в указанный файл будут поступать используемые по умолчанию атрибуты защиты, не подлежащие наследованию. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемыйфайл |
winreg.h |
|||||||||||||||
См. также |
RegLoadKey, RegUnLoadKey, RegRestoreKey и RegDeleteKey. |
|||||||||||||||
Пример |
См. пример применения функции RegLoadKey. |
|||||||||||||||
RegSetValueEx * Windows 98 * Windows 2000 |
||||||||||||||||
Описание |
Функция RegSetValueEx устанавливает именованное значение любого под-ключа системного реестра. В Windows 2000 и Windows 98 у данного под-ключа может быть множество именованных значений. |
|||||||||||||||
Синтаксис |
LONG RegSetValueEx(HKEY hKey, LPCTSTR IpszValueName, DWORD dwReserved, DWORD dwDataType, CONST BYTE* IpData, DWORD dwBytes) |
|||||||||||||||
Параметры |
||||||||||||||||
hKey |
HKEY: Родительский ключ подключа, значение которого устанавливается. Это может быть любой открытый ключ либо один из предопределенных ключей, перечисленных в табл. 19.1. |
|||||||||||||||
IpszValueName |
LPCTSTR Указатель на строку, завершающуюся нулевым символом и содержащую имя значения, которое подлежит установке. Если установлено значение NULL данного параметра, а тип данных, определяемых параметром dwDataType, соответствует типу REG_SZ, тогда содержимое данного значения записывается в неименованном или устанавливаемом по умолчанию значении. |
|||||||||||||||
dwReserved |
DWORD: Зарезервировано. Для этого параметра следует установить значение NULL. |
|||||||||||||||
dw Data Type |
DWORD: Тип сохраняемых данных. Доступные типы данных перечислены в табл. 19.5. |
|||||||||||||||
LpData |
CONST BYTE*: Указатель на данные, которые будут сохраняться в выбранном значении. Объем данных, сохраняемых в системном реестре, ограничивается используемым объемом памяти. Поэтому большие значения должны храниться в файлах, а имена этих файлов следует хранить в системном реестре. |
|||||||||||||||
dwBytes |
DWORD: Длина сохраняемой строки данных за исключением завершающего строку нулевого символа. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegQueryValueEx, RegQuerylnfoKey, RegQueryValueEx. |
|||||||||||||||
Пример |
См. пример применения функции RegCreateEx. |
|||||||||||||||
ReqUnLoadKt • Windows 98 • Windows 2000 |
||||||||||||||||
Описание |
Функция RegUnLoadKey удаляет из системного реестра ключ улья и все его подключи. |
|||||||||||||||
Синтаксис |
LONG RegUnLoadKey(HKEY hKey, LPCTSTR IpszSubKey) |
|||||||||||||||
Параметры |
||||||||||||||||
НКеу |
HKEY: Удаляемый ключ. Это может быть ключ HKEY_USER, HKEY_LOCAL_MACHINE или значение, возвращаемое функцией Reg-ConnectRegistry и представляющее собой узел системного реестра, находящегося на другой машине. |
|||||||||||||||
IpszSubKey |
LPCTSTR: Указатель на строку, завершающуюся нулевым символом и содержащую имя удаляемого ключа. При этом удаляются также все подключи и значения данного ключа. Этот ключ должен создаваться с помощью функции RegLoadKey. |
|||||||||||||||
Возвращаемое значение |
LONG: Если выполнение функции оказывается успешным, возвращается значение ERROR_SUCCESS. В противном случае возвращается код ошибки. |
|||||||||||||||
Включаемый файл |
winreg.h |
|||||||||||||||
См. также |
RegSaveKey, RegRestoreKey, RegDeleteKey. |
|||||||||||||||
Пример |
См. пример применения функции ReeLoadKev. |
|||||||||||||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.