Функции Реестра
Все функции возвращают код ошибки операции. Для расшифровки ошибки используйте функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM.
Не используйте числовые значения при написании программ, так как они могут измениться. Используйте имена констант, надежно и понятно.
Записывает модифицированные данные, если такие есть, в кэш оперативной памяти, для их дальнейшей записи на диск (отложенная запись), освобождает дескриптор ключа и немедленно возвращает управление программе.
hKey дескриптор ключа, который необходимо закрыть.
Возвращает код ошибки.
Попытка закрыть уже закрытый ключ не опасна, просто вернется код ошибки ERROR_BADKEY (1010 $3F2). Ключ не должен находиться в открытом состояний дольше, чем надо. Закрывайте ключ сразу, как появится такая возможность, лучше потом откроете его снова.
Записывает модифицированные данные, если такие есть, непосредственно на диск (немедленная запись), освобождает дескриптор ключа и только после этого возвращает управление программе. Очень медленная функция.
hKey дескриптор ключа, который необходимо закрыть.
Возвращает код ошибки.
Попытка закрыть уже закрытый ключ не опасна, просто вернется код ошибки ERROR_BADKEY (1010 $3F2). Ключ не должен находиться в открытом состояний дольше, чем надо. Закрывайте ключ сразу, как появится такая возможность, лучше потом откроете его снова.
Создает новый ключ, если ключ существует, то только открывает его.
hKey дескриптор ключа, от которого
указывается путь
lpSubKey указатель на путь к создаваемому ключу
Reserved всегда 0
lpClass указатель на строку, которая определяет
класс (тип объекта) этого ключа (пока не знаю nil)
dwOptions одно и значений:
REG_OPTION_NON_VOLATILE | энергонезависимый ключ. Сохраняется после перезагрузки системы. По умолчанию. |
REG_OPTION_VOLATILE | энергозависимый ключ. Не сохраняется после перезагрузки системы. В Windows95 не поддерживается. |
samDesired маска доступа ключа. Только WindowsNT. Комбинация из значений:
KEY_CREATE_SUB_KEY | разрешено создание подключей |
KEY_ENUMERATE_SUB_KEYS | разрешена нумерация ключей |
KEY_EXECUTE | разрешено чтение |
KEY_NOTIFY | разрешено уведомление об изменениях |
KEY_QUERY_VALUE | разрешено чтение данных |
KEY_SET_VALUE | разрешена запись данных |
KEY_READ | комбинация из KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY |
KEY_WRITE | комбинация из KEY_SET_VALUE и KEY_CREATE_SUB_KEY |
KEY_ALL_ACCESS | полный доступ, комбинация из всех. |
lpSecurityAttributes указатель на структуру, которая
определяет может ли дескриптор быть унаследован
дочерними процессами. Если nil дескриптор не может
быть унаследован.
phkResult указатель на переменную в которую будет
записан дескриптор созданного ключа.
lpdwDisposition указатель на переменную в которую
будет записано одно из значений:
REG_CREATED_NEW_KEY | ключа не было и он создан |
REG_OPENED_EXISTING_KEY | ключ существовал и был открыт без изменений |
Возвращает код ошибки.
Удаляет ключ по указанному пути. Для Windows95 удаляет все входящие подключи. Для WindowsNT каждый подключ надо удалять отдельно.
hKey дескриптор ключа, от которого
указывается путь
lpSubKey указатель на путь к удаляемому ключу
Возвращает код ошибки.
Удаляет параметр с указанным именем (и имя и значение) для указанного ключа.
hKey дескриптор ключа, внутри которого
находится удаляемый параметр
lpValueName указатель на строку содержащую имя
удаляемого параметра. Если данный параметр равен
nil, или указывает на пустую строку, то удаляет
параметр по умолчанию.
Возвращает код ошибки.
Ключ должен быть открыт с маской доступа содержащей KEY_SET_VALUE
При каждом вызове возвращает информацию об очередном дочернем ключе.
hKey дескриптор ключа, для которого
запрашивается информация о дочерних ключах
dwIndex индекс дочернего ключа для поиска.
Должен быть равен 0 для первого запроса и
увеличиваться для последующих. Так как на самом
деле ключи не упорядочены, то добавленный новый
ключ в последствии может иметь любой индекс.
lpName указатель на буфер, который принимает имя
ключа с терминальным нулем. В буфер копируется
только имя дочернего ключа, а не вся иерархия.
lpcbName указатель на переменную содержащую
длину буфера. По возвращению содержит количество
символов скопированных в буфер, без учета
терминального нуля.
lpReserved всегда ноль
lpClass указатель на буфер, который примет имя
класса дочернего ключа. Может быть равен nil.
lpcbClass указатель на переменную содержащую
длину буфера для приема имени класса. По
окончании функции содержит длину строки, без
учета терминального нуля, занесенную в буфер.
Может быть равен nil, только если lpClass равен nil.
lpftLastWriteTime указатель на переменную, которая
примет значение времени последней модификации
дочернего ключа или его параметров. В Windows95 не
поддерживается всегда 0.
Возвращает код ошибки.
Ключ должен быть открыт с маской доступа содержащей KEY_ENUMERATE_SUB_KEYS.
При каждом вызове возвращает информацию об очередном параметре.
hKey дескриптор ключа, для которого
запрашивается информация о параметрах
dwIndex индекс параметра для поиска. Должен быть
равен 0 для первого запроса и увеличиваться для
последующих. Так как на самом деле параметры не
упорядочены, то добавленный новый параметр в
последствии может иметь любой индекс.
lpValueName указатель на буфер, который принимает
имя параметра с терминальным нулем
lpcbValueName указатель на переменную содержащую
длину буфера. По возвращению содержит количество
символов скопированных в буфер, без учета
терминального нуля.
lpReserved всегда ноль
lpType указатель на переменную, которая примет
код типа данных параметра. Будет иметь одно из
следующих значений:
Windows | Delphi |
REG_SZ | строка, соответствует rdString |
REG_EXPAND_SZ | строка, описывающая переменную окружения Windows вроде "%PATH%", соответствует rdExpandString |
REG_DWORD | 32 бита число, соответствует rdInteger |
REG_BINARY | двоичные данные в любом виде, соответствует rdBinary |
остальные типы в Delphi не поддерживаются и считаются rdUnknown |
lpData указатель на буфер, который примет
значение параметра. Может быть nil, если значение
не требуется.
lpcbData указатель на переменную содержащую
размер буфера, в байтах, для приема значения (lpData).
Может быть nil, только если lpData равен nil. По
возвращению переменная содержит размер данных, в
байтах, скопированных в буфер lpData. Для типа
строка включает терминальный ноль. Если размер
буфера оказался меньше требуемого, функция
возвращается со значением ERROR_MORE_DATA , а данная
переменная содержит требуемый размер буфера.
Если lpData равно nil, а lpcbData не nil, то в этой
переменной возвращается требуемый размер
буфера, т.е. размер значения параметра.
Возвращает код ошибки.
Ключ должен быть открыт с маской доступа содержащей KEY_QUERY_VALUE.
Создает дочерний ключ для корневого ключа и сохраняет в нем улей (часть реестра), находящийся в отдельном файле, который предварительно должен быть создан с помощью функции RegSaveKey.
hKey дескриптор корневого ключа. Загрузка
происходит только в вершину реестра, поэтому в
качестве корня могут быть использованы лишь
ключи HKEY_USERS, HKEY_LOCAL_MACHINE или дескриптор
возвращенный функцией RegConnectRegistry.
lpSubKey имя дочернего ключа, но не путь, т.к. он
должен быть создан сразу под корневым
lpFile имя файла. Может содержать путь, если путь
отсутствует, то берется корневой каталог Windows.
Возвращает код ошибки.
Нельзя использовать другие, кроме указанных, дескрипторы. При использовании других дескрипторов, ни создание дочернего ключа, ни загрузка происходить не будут, а функция вернет ошибку. В Windows95 функция не поддерживает длинное имя файла, по этому надо использовать его короткое имя.
Загруженный ключ теряется после перезагрузки системы, но до этого не может быть удален никак иначе, как только вызовом функции RegUnLoadKey.
Открывает указанный ключ и возвращает его дескриптор. В отличии от RegCreateKeyEx не создает ключ в случае его отсутствия.
hKey дескриптор ключа, от которого
указывается путь
lpSubKey указатель на путь к открываемому ключу
ulOptions всегда 0
samDesired маска доступа ключа. Только WindowsNT.
Комбинация из значений:
KEY_CREATE_SUB_KEY | разрешено создание подключей |
KEY_ENUMERATE_SUB_KEYS | разрешена нумерация ключей |
KEY_EXECUTE | разрешено чтение |
KEY_NOTIFY | разрешено уведомление об изменениях |
KEY_QUERY_VALUE | разрешено чтение данных |
KEY_SET_VALUE | разрешена запись данных |
KEY_READ | комбинация из KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY |
KEY_WRITE | комбинация из KEY_SET_VALUE и KEY_CREATE_SUB_KEY |
KEY_ALL_ACCESS | полный доступ, комбинация из всех |
phkResult указатель на переменную в которую будет записан дескриптор открытого ключа
Возвращает код ошибки.
Возвращает информацию для указанного ключа, количество и максимальную длину имен дочерних ключей и параметров.
hKey дескриптор ключа, для которого
запрашивается информация
lpClass указатель на буфер, который примет имя
класса ключа
lpcbClass указатель на переменную содержащую
длину буфера для приема имени класса. По
окончании функции содержит длину строки, без
учета терминального нуля, занесенную в буфер.
lpReserved всегда ноль
lpcSubKeys указатель на переменную, которая
примет значение количества дочерних ключей
lpcbMaxSubKeyLen указатель на переменную, которая
примет значение максимальной длины (в символах)
имени дочернего ключа. В Windows95 с учетом
терминального нуля, а в WindowsNT без.
lpcbMaxClassLen указатель на переменную, которая
примет значение максимальной длины (в символах)
имени класса для дочерних ключей. Не содержит
терминального нуля.
lpcValues указатель на переменную, которая примет
значение количества параметров ключа
lpcbMaxValueNameLen указатель на переменную, которая
примет значение максимальной длины (в символах)
имени параметра ключа
lpcbMaxValueLen указатель на переменную, которая
примет значение максимальной длины значения
параметра ключа
lpcbSecurityDescriptor указатель на переменную, которая
примет значение максимальной длины дескриптора
защиты ключа
lpftLastWriteTime указатель на переменную, которая
примет значение времени последней модификации
ключа или его параметров. В Windows95 не
поддерживается всегда 0.
Возвращает код ошибки.
Любой из параметров может быть равен nil. Ключ должен быть открыт с маской доступа содержащей KEY_QUERY_VALUE.
Дает тип и значение параметра по имени для указанного ключа.
hKey дескриптор ключа, внутри которого
находится параметр
lpValueName указатель на строку содержащую имя
параметра. Если данный параметр равен nil, или
указывает на пустую строку, то имеется в виду, так
называемый, параметр по умолчанию. Для Windows95
значение параметра по умолчанию всегда только
типа строка. Для Windows98 первоначально тоже типа
строка, но с помощью функции RegSetValueEx в
последствии можно установить любой тип. Для WindowsNT
не имеет первоначального типа и может быть любым.
lpReserved всегда ноль
lpType указатель на переменную, которая примет
тип значения параметра. Одно из следующих:
Windows | Delphi |
REG_SZ | строка, соответствует rdString |
REG_EXPAND_SZ | строка, описывающая переменную окружения Windows вроде "%PATH%", соответствует rdExpandString |
REG_DWORD | 32 бита число, соответствует rdInteger |
REG_BINARY | двоичные данные в любом виде, соответствует rdBinary |
остальные типы в Delphi не поддерживаются и считаются rdUnknown |
lpData указатель на буфер, который примет само
значение параметра. Может быть nil, если значение
не требуется
lpcbData указатель на переменную содержащую
размер буфера, в байтах, для приема значения (lpData).
Может быть nil только если lpData равно nil. По
окончанию функции переменная содержит размер
данных, в байтах, скопированных в lpData. Для типа
строка включает терминальный ноль. Если размер
буфера оказался меньше требуемого, функция
возвращается со значением ERROR_MORE_DATA , а данная
переменная содержит требуемый размер буфера.
Если lpData равно nil, а lpcbData не nil, то в этой
переменной возвращается требуемый размер
буфера, т.е. размер значения параметра.
Возвращает код ошибки.
Ключ должен быть открыт с маской доступа содержащей KEY_QUERY_VALUE.
Если данная функция вызвана как ANSI версия (или явно RegQueryValueExA или без определения UNICODE при трансляции), то она автоматически преобразует строковые значения в ANSI перед копированием в буфер.
Сохраняет указанный ключ, его дочерние ключи и параметры в резервном файле OldFile и заменяет содержание ключа содержимым файла NewFile, который предварительно должен быть создан с помощью функции RegSaveKey. Замена вступает в силу после перезагрузки системы.
hKey дескриптор корневого ключа. При этом
если корневые ключи не HKEY_USERS или не HKEY_LOCAL_MACHINE имя
дочернего ключа должно быть nil.
lpSubKey имя дочернего ключа (но не путь), если
корневой ключ HKEY_USERS или HKEY_LOCAL_MACHINE. Иначе nil.
lpNewFile имя файла содержащего улей (часть
реестра) для загрузки. Может содержать путь, если
путь отсутствует, то берется корневой каталог
Windows.
lpOldFile имя резервного файла, в котором будет
сохранено старое содержание ключа (улей - часть
реестра). Может содержать путь, если путь
отсутствует, то берется корневой каталог Windows.
Возвращает код ошибки.
Загружает в указанный ключ улей (часть реестра) находящийся в отдельном файле, который предварительно должен быть создан с помощью функции RegSaveKey. Только WindowsNT.
hKey дескриптор корневого ключа. При этом
если корневые ключи не HKEY_USERS или не HKEY_LOCAL_MACHINE имя
дочернего ключа должно быть nil.
lpSubKey имя дочернего ключа (но не путь), если
корневой ключ HKEY_USERS или HKEY_LOCAL_MACHINE. Иначе nil.
lpFile имя файла содержащего улей (часть
реестра) для загрузки.
dwFlags флаг, указывающий энергозависимость
ключа:
REG_OPTION_NON_VOLATILE | энергонезависимый ключ. Сохраняется после перезагрузки системы. По умолчанию. |
REG_OPTION_VOLATILE | энергозависимый ключ. Не сохраняется после перезагрузки системы. В Windows95 не поддерживается. |
Возвращает код ошибки.
Сохраняет указанный ключ, его дочерние ключи и параметры в отдельном файле.
hKey дескриптор ключа содержание, которого
необходимо сохранить.
lpFile имя файла, в котором будет сохранено
содержание ключа (улей - часть реестра). Может
содержать путь, если путь отсутствует, то берется
корневой каталог Windows. В Windows95 не поддерживаются
длинные имена. Сохраняйте с короткими именами, а
потом переименовывайте в длинные имена.
lpSecurityAttributes указатель на структуру
содержащей атрибут секретности для создаваемого
файла, если nil файлу устанавливается атрибут по
умолчанию. Только WindowsNT.
Возвращает код ошибки.
Устанавливает значение и тип указанного параметра.
hKey дескриптор ключа, для которого
устанавливаются значение и тип параметра
lpValueName указатель на строку содержащую имя
параметра с терминальным нулем. Если данный
параметр равен nil, или указывает на пустую строку,
то имеется в виду, так называемый, параметр по
умолчанию. Для Windows95 значение параметра по
умолчанию всегда только типа строка. Для Windows98
первоначально тоже типа строка, но с помощью
функции RegSetValueEx в последствии можно установить
любой тип. Для WindowsNT не имеет первоначального
типа и может быть любым.
Reserved всегда ноль
dwType код типа данных параметра. Имеет одно из
следующих значений:
Windows | Delphi |
REG_SZ | строка, соответствует rdString |
REG_EXPAND_SZ | строка, описывающая переменную окружения Windows вроде "%PATH%", соответствует rdExpandString |
REG_DWORD | 32 бита число, соответствует rdInteger |
REG_BINARY | двоичные данные в любом виде, соответствует rdBinary |
остальные типы в Delphi не поддерживаются и считаются rdUnknown |
lpData указатель на буфер, который содержит
значение параметра
cbData размер буфера, в байтах. Для типа строка
включает терминальный ноль.
Возвращает код ошибки.
Ключ должен быть открыт с маской доступа содержащей KEY_SET_VALUE.
Удаляет (выгружает) ключ, предварительно загруженный функцией RegLoadKey.
hKey дескриптор корневого ключа. Лишь ключи HKEY_USERS, HKEY_LOCAL_MACHINE или дескриптор возвращенный функцией RegConnectRegistry. lpSubKey имя дочернего ключа, но не путь, т.к. он должен быть создан сразу под корневым
Возвращает код ошибки.
Конец страницы Функции