Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда следует использовать реестр
Реестр Windows подходит для хранения небольших объемов данных конфигурации (параметров, параметров, состояния пользователя). Рассмотрим альтернативные варианты для других сценариев:
| Scenario | Recommendation |
|---|---|
| Параметры приложения (современные приложения) | Предпочитайте ApplicationData.LocalSettings (UWP/WinUI) или JSON/XML-файл для %APPDATA% классических приложений. Это упрощает резервное копирование, миграцию и отладку. |
| Большие данные или структурированные данные | Используйте файл (JSON, SQLite и т. д.), а не хранение больших двоичных объектов в значениях реестра. |
| Конфигурация службы на уровне компьютера |
HKEY_LOCAL_MACHINE Реестр в соответствующем случае — это стандартный механизм для служб Windows. |
| Параметры для каждого пользователя (классические приложения) | Реестр в HKEY_CURRENT_USER\Software\<Company>\<App> соответствии с соответствующими и обычными. |
| Общее состояние между процессами | Рассмотрим именованную общую память, именованные каналы или файл— реестр не содержит уведомления об изменениях, встроенных в чтение значений. Используйте RegNotifyChangeKeyValue только для грубого уведомления. |
Important
Рекомендации по безопасности. Открытие разделов реестра с минимальными правами доступа (например, KEY_READ или KEY_WRITE) — избегайте использования KEY_ALL_ACCESS или MAXIMUM_ALLOWED.
HKEY_LOCAL_MACHINE Запись только из процессов с повышенными привилегиями (администратором). Всегда проверяйте возвращаемые значения из функций реестра — они возвращают ERROR_SUCCESS успешность и код ошибки Win32 при сбое (а не HRESULT).
Note
Распространенные ошибки — типы строк: значения строк реестра (REG_SZ, REG_EXPAND_SZ) должны включать терминатор NULL в число байтов, переданных RegSetValueExв . При чтении строк с RegQueryValueEx помощью или RegGetValueвсегда завершайте буфер, если хранимое значение может не включать терминатор , некоторые сторонние программы записывают строки без него.
Ниже приведены функции реестра.
| Функция | Описание |
|---|---|
| GetSystemRegistryQuota | Извлекает текущий размер реестра и максимальный размер, который разрешено получить в системе. |
| RegCloseKey | Закрывает дескриптор указанным разделом реестра. |
| RegConnectRegistry | Устанавливает подключение к предопределенному дескриптору реестра на другом компьютере. |
| RegCopyTree | Копирует указанный раздел реестра вместе со значениями и вложенными ключами в указанный ключ назначения. |
| RegCreateKeyEx | Создает указанный раздел реестра. |
| RegCreateKeyTransacted | Создает указанный раздел реестра и связывает его с транзакцией. |
| RegDeleteKey | Удаляет вложенный ключ и его значения. |
| RegDeleteKeyEx | Удаляет подраздел и его значения из указанного представления реестра для конкретной платформы. |
| RegDeleteKeyTransacted | Удаляет вложенный ключ и его значения из указанного представления для конкретной платформы реестра в виде транзакций. |
| RegDeleteKeyValue | Удаляет указанное значение из указанного раздела реестра и подраздела. |
| RegDeleteTree | Удаляет вложенные ключи и значения указанного ключа рекурсивно. |
| RegDeleteValue | Удаляет именованное значение из указанного раздела реестра. |
| RegDisablePredefinedCache | Отключает кэширование для предопределенного дескриптора реестра для HKEY_CURRENT_USER для текущего процесса. |
| RegDisablePredefinedCacheEx | Отключает кэширование для всех предопределенных дескрипторов реестра для текущего процесса. |
| RegDisableReflectionKey | Отключает отражение реестра для указанного ключа. |
| RegEnableReflectionKey | Включает отражение реестра для указанного отключенного ключа. |
| RegEnumKeyEx | Перечисляет подразделы указанного открытого раздела реестра. |
| RegEnumValue | Перечисляет значения для указанного открытого раздела реестра. |
| RegFlushKey | Записывает все атрибуты указанного открытого раздела реестра в реестр. |
| RegGetKeySecurity | Извлекает копию дескриптора безопасности, защищающую указанный открытый раздел реестра. |
| RegGetValue | Извлекает тип и данные для указанного значения реестра. |
| RegLoadKey | Создает подраздел в разделе HKEY_USERS или HKEY_LOCAL_MACHINE и сохраняет сведения о регистрации из указанного файла в этот подраздел. |
| RegLoadMUIString | Загружает указанную строку из указанного ключа и подраздела. |
| RegNotifyChangeKeyValue | Уведомляет вызывающий объект об изменениях атрибутов или содержимого указанного раздела реестра. |
| RegOpenCurrentUser | Извлекает дескриптор HKEY_CURRENT_USER ключа для пользователя, который текущий поток олицетворяет. |
| RegOpenKeyEx | Открывает указанный раздел реестра. |
| RegOpenKeyTransacted | Открывает указанный раздел реестра и связывает его с транзакцией. |
| RegOpenUserClassesRoot | Извлекает дескриптор HKEY_CLASSES_ROOT ключа для указанного пользователя. |
| RegOverridePredefKey | Сопоставляет стандартный раздел реестра с указанным разделом реестра. |
| RegQueryInfoKey | Извлекает сведения о указанном разделе реестра. |
| RegQueryMultipleValues | Извлекает тип и данные для списка имен значений, связанных с открытым разделом реестра. |
| RegQueryReflectionKey | Определяет, отключено ли отражение или включено для указанного ключа. |
| RegQueryValueEx | Извлекает тип и данные для указанного имени значения, связанного с открытым разделом реестра. |
| RegRenameKey | Изменяет имя указанного раздела реестра. |
| RegReplaceKey | Заменяет файл, который поддерживает раздел реестра и все его вложенные разделы другим файлом. |
| RegRestoreKey | Считывает сведения реестра в указанном файле и копирует его по указанному ключу. |
| RegSaveKey | Сохраняет указанный ключ и все его вложенные ключи и значения в новый файл. |
| RegSaveKeyEx | Сохраняет указанный ключ и все его вложенные ключи и значения в новый файл. Формат сохраненного ключа или hive можно указать. |
| RegSetKeyValue | Задает данные для указанного значения в указанном разделе реестра и подразделе. |
| RegSetKeySecurity | Задает безопасность открытого раздела реестра. |
| RegSetValueEx | Задает данные и тип указанного значения в разделе реестра. |
| RegUnLoadKey | Выгрузит указанный раздел реестра и его подразделы из реестра. |
Следующие функции оболочки можно использовать с реестром:
- AssocCreate
- AssocQueryKey
- AssocQueryString
- AssocQueryStringByKey
- SHCopyKey
- SHDeleteEmptyKey
- SHDeleteKey
- SHDeleteValue
- SHEnumKeyEx
- SHEnumValue
- SHGetValue
- SHQueryInfoKey
- SHQueryValueEx
- SHRegCloseUSKey
- SHRegCreateUSKey
- SHRegDeleteEmptyUSKey
- SHRegDeleteUSValue
- SHRegDuplicateHKey
- SHRegEnumUSKey
- SHRegEnumUSValue
- SHRegGetBoolUSValue
- SHRegGetIntW
- SHRegGetPath
- SHRegGetUSValue
- SHRegOpenUSKey
- SHRegQueryInfoUSKey
- SHRegQueryUSValue
- SHRegSetPath
- SHRegSetUSValue
- SHRegWriteUSValue
- SHSetValue
Ниже приведены функции инициализации-файла. Они извлекают информацию из и копируют сведения в файл инициализации, определяемый системой или приложением. Эти функции предоставляются только для совместимости с 16-разрядными версиями Windows. Новые приложения должны использовать реестр.
| Функция | Описание |
|---|---|
| GetPrivateProfileInt | Извлекает целое число, связанное с ключом в указанном разделе файла инициализации. |
| GetPrivateProfileSection | Извлекает все ключи и значения для указанного раздела файла инициализации. |
| GetPrivateProfileSectionNames | Извлекает имена всех разделов в файле инициализации. |
| GetPrivateProfileString | Извлекает строку из указанного раздела в файле инициализации. |
| GetPrivateProfileStruct | Извлекает данные, связанные с ключом в указанном разделе файла инициализации. |
| GetProfileInt | Извлекает целое число из ключа в указанном разделе файла Win.ini. |
| GetProfileSection | Извлекает все ключи и значения для указанного раздела файла Win.ini. |
| GetProfileString | Извлекает строку, связанную с ключом в указанном разделе файла Win.ini. |
| WritePrivateProfileSection | Заменяет ключи и значения для указанного раздела в файле инициализации. |
| WritePrivateProfileString | Копирует строку в указанный раздел файла инициализации. |
| WritePrivateProfileStruct | Копирует данные в ключ в указанном разделе файла инициализации. |
| WriteProfileSection | Заменяет содержимое указанного раздела в файле Win.ini указанными ключами и значениями. |
| WriteProfileString | Копирует строку в указанный раздел файла Win.ini. |
Устаревшие функции
Эти функции предоставляются только для совместимости с 16-разрядными версиями Windows: