winreg.md
1> **Источник:** https://python-all.ru/3.15/library/winreg.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `winreg` – доступ к реестру Windows89**Исходный код:** [PC/winreg.c](https://python-all.ru/src/3.15/PC/winreg.c)1011---1213Эти функции предоставляют доступ к API реестра Windows из Python. Вместо использования целого числа в качестве дескриптора реестра используется [объект-дескриптор](https://python-all.ru/3.15/library/winreg.html#handle-object), чтобы гарантировать корректное закрытие дескрипторов, даже если программист забудет явно закрыть их.1415[Доступность](https://python-all.ru/3.15/library/intro.html#availability): Windows.1617Изменено в версии 3.3: Некоторые функции этого модуля раньше вызывали исключение [`WindowsError`](https://python-all.ru/3.15/library/exceptions.html#WindowsError), которое теперь является псевдонимом [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError).1819## Функции2021Этот модуль предоставляет следующие функции:2223#### `winreg.CloseKey(hkey)`2425Закрывает ранее открытый ключ реестра. Аргумент *hkey* указывает ранее открытый ключ.2627> **Примечание**28>29> Если *hkey* не закрыт с помощью этого метода (или через [`hkey.Close()`](https://python-all.ru/3.15/library/winreg.html#winreg.PyHKEY.Close)), он закрывается, когда объект *hkey* уничтожается Python.3031#### `winreg.ConnectRegistry(computer_name, key)`3233Устанавливает соединение с предопределенным дескриптором реестра на другом компьютере и возвращает [объект-дескриптор](https://python-all.ru/3.15/library/winreg.html#handle-object).3435*computer\_name* – это имя удаленного компьютера в формате `r"\\computername"`. Если `None`, используется локальный компьютер.3637*key* – это предопределенный дескриптор для подключения.3839Возвращаемое значение – это дескриптор открытого ключа. Если функция завершается ошибкой, возникает [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError) исключение.4041Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.ConnectRegistry` с аргументами `computer_name`, `key`.4243Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).4445#### `winreg.CreateKey(key, sub_key)`4647Создает или открывает указанный ключ, возвращая [объект-дескриптор](https://python-all.ru/3.15/library/winreg.html#handle-object).4849*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).5051*sub\_key* – это строка, задающая имя ключа, который открывает или создает этот метод.5253Если *key* – один из предопределенных ключей, *sub\_key* может быть `None`. В этом случае возвращаемый дескриптор совпадает с дескриптором ключа, переданным в функцию.5455Если ключ уже существует, эта функция открывает существующий ключ.5657Возвращаемое значение – это дескриптор открытого ключа. Если функция завершается ошибкой, возникает [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError) исключение.5859Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.CreateKey` с аргументами `key`, `sub_key`, `access`.6061Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.OpenKey/result` с аргументом `key`.6263Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).6465#### `winreg.CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE)`6667Создает или открывает указанный ключ, возвращая [объект-дескриптор](https://python-all.ru/3.15/library/winreg.html#handle-object).6869*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).7071*sub\_key* – это строка, задающая имя ключа, который открывает или создает этот метод.7273*reserved* – это зарезервированное целое число, которое должно быть равно нулю. По умолчанию – ноль.7475*access* – это целое число, задающее маску доступа, которая описывает требуемый уровень безопасности для ключа. По умолчанию – [`KEY_WRITE`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_WRITE). См. [Access Rights](https://python-all.ru/3.15/library/winreg.html#access-rights) для других допустимых значений.7677Если *key* – один из предопределенных ключей, *sub\_key* может быть `None`. В этом случае возвращаемый дескриптор совпадает с дескриптором ключа, переданным в функцию.7879Если ключ уже существует, эта функция открывает существующий ключ.8081Возвращаемое значение – это дескриптор открытого ключа. Если функция завершается ошибкой, возникает [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError) исключение.8283Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.CreateKey` с аргументами `key`, `sub_key`, `access`.8485Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.OpenKey/result` с аргументом `key`.8687Добавлено в версии 3.2.8889Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).9091#### `winreg.DeleteKey(key, sub_key)`9293Удаляет указанный ключ.9495*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).9697*sub\_key* – это строка, которая должна быть подразделом ключа, идентифицированного *key* параметром. Это значение не должно быть `None`, и ключ не может содержать подразделы.9899*Этот метод не может удалять ключи, содержащие подразделы.*100101Если метод выполняется успешно, удаляется весь ключ, включая все его значения. Если метод завершается неудачей, возбуждается исключение [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError).102103Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.DeleteKey` с аргументами `key`, `sub_key`, `access`.104105Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).106107#### `winreg.DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0)`108109Удаляет указанный ключ.110111*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).112113*sub\_key* – это строка, которая должна быть подразделом ключа, идентифицированного *key* параметром. Это значение не должно быть `None`, и ключ не может иметь подразделы.114115*reserved* – это зарезервированное целое число, которое должно быть равно нулю. По умолчанию – ноль.116117*access* – это целое число, задающее маску доступа, описывающую желаемый уровень безопасности для ключа. Значение по умолчанию – [`KEY_WOW64_64KEY`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_WOW64_64KEY). В 32-разрядной Windows константы WOW64 игнорируются. См. [Access Rights](https://python-all.ru/3.15/library/winreg.html#access-rights) для других допустимых значений.118119*Этот метод не может удалять ключи, содержащие подразделы.*120121Если метод выполняется успешно, удаляется весь ключ, включая все его значения. Если метод завершается неудачей, возбуждается исключение [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError).122123В неподдерживаемых версиях Windows возбуждается исключение [`NotImplementedError`](https://python-all.ru/3.15/library/exceptions.html#NotImplementedError).124125Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.DeleteKey` с аргументами `key`, `sub_key`, `access`.126127Добавлено в версии 3.2.128129Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).130131#### `winreg.DeleteTree(key, sub_key=None)`132133Рекурсивно удаляет указанный ключ и все его подразделы и значения.134135*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).136137*sub\_key* – строка, указывающая имя удаляемого подраздела. Если `None`, удаляет все подразделы и значения указанного ключа.138139Эта функция удаляет ключ и все его потомки. Если *sub\_key* равно `None`, удаляются все подразделы и значения указанного ключа.140141Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.DeleteTree` с аргументами `key`, `sub_key`.142143Добавлено в версии 3.15.144145#### `winreg.DeleteValue(key, value)`146147Удаляет именованное значение из ключа реестра.148149*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).150151*value* – это строка, определяющая значение, которое нужно удалить.152153Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.DeleteValue` с аргументами `key`, `value`.154155#### `winreg.EnumKey(key, index)`156157Перечисляет подразделы открытого ключа реестра, возвращая строку.158159*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).160161*index* – это целое число, определяющее индекс извлекаемого ключа.162163Функция при каждом вызове получает имя одного подраздела. Обычно она вызывается многократно, пока не возникнет исключение [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError), указывающее на отсутствие других значений.164165Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.EnumKey` с аргументами `key`, `index`.166167Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).168169#### `winreg.EnumValue(key, index)`170171Перечисляет значения открытого ключа реестра, возвращая кортеж.172173*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).174175*index* – это целое число, определяющее индекс извлекаемого значения.176177Функция при каждом вызове получает имя одного подраздела. Обычно она вызывается многократно, пока не возникнет исключение [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError), указывающее на отсутствие других значений.178179Результат – кортеж из 3 элементов:180181| Индекс | Значение |182| --- | --- |183| `0` | Строка, идентифицирующая имя значения. |184| `1` | Объект, содержащий данные значения, и его тип зависит от базового типа раздела реестра. |185| `2` | Целое число, идентифицирующее тип данных значения (см. таблицу в документации для [`SetValueEx()`](https://python-all.ru/3.15/library/winreg.html#winreg.SetValueEx)). |186187Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.EnumValue` с аргументами `key`, `index`.188189Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).190191#### `winreg.ExpandEnvironmentStrings(str)`192193Заменяет заполнители переменных среды `%NAME%` в строках вида [`REG_EXPAND_SZ`](https://python-all.ru/3.15/library/winreg.html#winreg.REG_EXPAND_SZ):194195```python196>>> ExpandEnvironmentStrings('%windir%')197'C:\\Windows'198```199200Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.ExpandEnvironmentStrings` с аргументом `str`.201202#### `winreg.FlushKey(key)`203204Записывает все атрибуты раздела в реестр.205206*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).207208Вызов `FlushKey()` для изменения раздела не обязателен. Изменения в реестре сбрасываются на диск самим реестром с помощью его отложенного сброса (lazy flusher). Изменения в реестре также сбрасываются на диск при завершении работы системы. В отличие от [`CloseKey()`](https://python-all.ru/3.15/library/winreg.html#winreg.CloseKey), метод `FlushKey()` возвращает управление только после записи всех данных в реестр. Приложение должно вызывать `FlushKey()` только в случае, если требуется абсолютная уверенность, что изменения в реестре находятся на диске.209210> **Примечание**211>212> Если нет уверенности, требуется ли вызов `FlushKey()`, скорее всего, он не требуется.213214#### `winreg.LoadKey(key, sub_key, file_name)`215216Создаёт подраздел в указанном разделе и сохраняет информацию реестра из указанного файла в этот подраздел.217218*key* – это дескриптор, возвращённый [`ConnectRegistry()`](https://python-all.ru/3.15/library/winreg.html#winreg.ConnectRegistry), или одна из констант [`HKEY_USERS`](https://python-all.ru/3.15/library/winreg.html#winreg.HKEY_USERS) или [`HKEY_LOCAL_MACHINE`](https://python-all.ru/3.15/library/winreg.html#winreg.HKEY_LOCAL_MACHINE).219220*sub\_key* – это строка, идентифицирующая загружаемый подраздел.221222*file\_name* – это имя файла, из которого загружаются данные реестра. Этот файл должен быть создан с помощью функции [`SaveKey()`](https://python-all.ru/3.15/library/winreg.html#winreg.SaveKey). В файловой системе FAT имя файла может не иметь расширения.223224Вызов `LoadKey()` завершается ошибкой, если вызывающий процесс не имеет привилегии `SE_RESTORE_PRIVILEGE`. Обратите внимание, что привилегии отличаются от прав доступа – см. [документацию RegLoadKey](https://python-all.ru/3.15/library/winreg.html) для подробностей.225226Если *key* – это дескриптор, возвращённый [`ConnectRegistry()`](https://python-all.ru/3.15/library/winreg.html#winreg.ConnectRegistry), то путь, указанный в *file\_name*, считается относительно удалённого компьютера.227228Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.LoadKey` с аргументами `key`, `sub_key`, `file_name`.229230#### `winreg.OpenKey(key, sub_key, reserved=0, access=KEY_READ)`231232#### `winreg.OpenKeyEx(key, sub_key, reserved=0, access=KEY_READ)`233234Открывает указанный раздел и возвращает [объект-дескриптор](https://python-all.ru/3.15/library/winreg.html#handle-object).235236*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).237238*sub\_key* – это строка, идентифицирующая открываемый подраздел.239240*reserved* – зарезервированное целое число, должно быть равно нулю. Значение по умолчанию – ноль.241242*access* – целое число, задающее маску доступа, описывающую желаемый уровень безопасности для раздела. По умолчанию [`KEY_READ`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_READ). См. [права доступа](https://python-all.ru/3.15/library/winreg.html#access-rights) для других допустимых значений.243244Результат – новый дескриптор указанного раздела.245246Если функция завершается ошибкой, возбуждается исключение [`OSError`](https://python-all.ru/3.15/library/exceptions.html#OSError).247248Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.OpenKey` с аргументами `key`, `sub_key`, `access`.249250Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.OpenKey/result` с аргументом `key`.251252Изменено в версии 3.2: Разрешено использование именованных аргументов.253254Изменено в версии 3.3: См. [выше](https://python-all.ru/3.15/library/winreg.html#exception-changed).255256#### `winreg.QueryInfoKey(key)`257258Возвращает информацию о разделе в виде кортежа.259260*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).261262Результат – кортеж из 3 элементов:263264| Индекс | Значение |265| --- | --- |266| `0` | Целое число, указывающее количество подразделов, которые есть у этого раздела. |267| `1` | Целое число, указывающее количество значений, которые есть у этого раздела. |268| `2` | Целое число, указывающее время последнего изменения раздела (если доступно), в единицах по 100 наносекунд с 1 января 1601 года. |269270Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.QueryInfoKey` с аргументом `key`.271272#### `winreg.QueryValue(key, sub_key)`273274Извлекает безымянное значение для раздела в виде строки.275276*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).277278*sub\_key* – строка, содержащая имя подраздела, с которым связано значение. Если этот параметр равен `None` или пустой строке, функция извлекает значение, заданное методом [`SetValue()`](https://python-all.ru/3.15/library/winreg.html#winreg.SetValue) для раздела, указанного в *key*.279280Значения в реестре имеют компоненты: имя, тип и данные. Этот метод извлекает данные первого значения с именем `NULL` для заданного раздела. Однако соответствующий вызов API не возвращает тип, поэтому всегда используйте [`QueryValueEx()`](https://python-all.ru/3.15/library/winreg.html#winreg.QueryValueEx), если это возможно.281282Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.QueryValue` с аргументами `key`, `sub_key`, `value_name`.283284#### `winreg.QueryValueEx(key, value_name)`285286Извлекает тип и данные для указанного имени значения, связанного с открытым разделом реестра.287288*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).289290*value\_name* – строка, указывающая имя запрашиваемого значения.291292Результат – кортеж из 2 элементов:293294| Индекс | Значение |295| --- | --- |296| `0` | Значение элемента реестра. |297| `1` | Целое число, указывающее тип реестра для этого значения (см. таблицу в документации для [`SetValueEx()`](https://python-all.ru/3.15/library/winreg.html#winreg.SetValueEx)) |298299Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.QueryValue` с аргументами `key`, `sub_key`, `value_name`.300301#### `winreg.SaveKey(key, file_name)`302303Сохраняет указанный раздел и все его подразделы в указанный файл.304305*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).306307*file\_name* – имя файла для сохранения данных реестра. Этот файл не должен существовать. Если имя файла содержит расширение, его нельзя использовать в файловых системах FAT с методом [`LoadKey()`](https://python-all.ru/3.15/library/winreg.html#winreg.LoadKey).308309Если *key* представляет раздел на удалённом компьютере, путь, указанный в *file\_name*, считается относительным этого удалённого компьютера. Вызывающий этот метод должен обладать привилегией безопасности **SeBackupPrivilege**. Обратите внимание: привилегии отличаются от разрешений – см. [документацию «Conflicts Between User Rights and Permissions»](https://python-all.ru/3.15/library/winreg.html) для подробностей.310311Эта функция передаёт `NULL` для *security\_attributes* в API.312313Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.SaveKey` с аргументами `key`, `file_name`.314315#### `winreg.SetValue(key, sub_key, type, value)`316317Связывает значение с указанным разделом.318319*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).320321*sub\_key* – строка, задающая имя подраздела, с которым связывается значение.322323*type* – целое число, указывающее тип данных. В настоящее время это должно быть [`REG_SZ`](https://python-all.ru/3.15/library/winreg.html#winreg.REG_SZ), то есть поддерживаются только строки. Используйте функцию [`SetValueEx()`](https://python-all.ru/3.15/library/winreg.html#winreg.SetValueEx) для поддержки других типов данных.324325*value* – это строка, задающая новое значение.326327Если раздел, указанный параметром *sub\_key*, не существует, функция SetValue создаёт его.328329Длина значений ограничена доступной памятью. Длинные значения (более 2048 байт) следует хранить в виде файлов, имена которых сохраняются в конфигурационном реестре. Это помогает реестру работать эффективно.330331Раздел, указанный параметром *key*, должен быть открыт с доступом [`KEY_SET_VALUE`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_SET_VALUE).332333Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.SetValue` с аргументами `key`, `sub_key`, `type`, `value`.334335#### `winreg.SetValueEx(key, value_name, reserved, type, value)`336337Сохраняет данные в поле значения открытого ключа реестра.338339*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).340341*value\_name* – это строка, задающая имя подключа, с которым связано значение.342343*reserved* может быть любым – в API всегда передаётся ноль.344345*type* – это целое число, задающее тип данных. Смотрите [Value Types](https://python-all.ru/3.15/library/winreg.html#value-types) для получения списка доступных типов.346347*value* – это строка, задающая новое значение.348349Этот метод также может задавать дополнительную информацию о значении и типе для указанного ключа. Ключ, указанный параметром key, должен быть открыт с доступом [`KEY_SET_VALUE`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_SET_VALUE).350351Чтобы открыть ключ, используйте методы [`CreateKey()`](https://python-all.ru/3.15/library/winreg.html#winreg.CreateKey) или [`OpenKey()`](https://python-all.ru/3.15/library/winreg.html#winreg.OpenKey).352353Длина значений ограничена доступной памятью. Длинные значения (более 2048 байт) следует хранить в виде файлов, имена которых сохраняются в конфигурационном реестре. Это помогает реестру работать эффективно.354355Возбуждает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.SetValue` с аргументами `key`, `sub_key`, `type`, `value`.356357#### `winreg.DisableReflectionKey(key)`358359Отключает отражение реестра для 32-разрядных процессов, работающих в 64-разрядной операционной системе.360361*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).362363Обычно вызывает [`NotImplementedError`](https://python-all.ru/3.15/library/exceptions.html#NotImplementedError) при выполнении в 32-разрядной операционной системе.364365Если ключ отсутствует в списке отражения, функция выполняется успешно, но не оказывает никакого эффекта. Отключение отражения для ключа не влияет на отражение каких-либо подключачей.366367Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.DisableReflectionKey` с аргументом `key`.368369#### `winreg.EnableReflectionKey(key)`370371Восстанавливает отражение реестра для указанного отключённого ключа.372373*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).374375Обычно вызывает [`NotImplementedError`](https://python-all.ru/3.15/library/exceptions.html#NotImplementedError) при выполнении в 32-разрядной операционной системе.376377Восстановление отражения для ключа не влияет на отражение каких-либо подключачей.378379Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.EnableReflectionKey` с аргументом `key`.380381#### `winreg.QueryReflectionKey(key)`382383Определяет состояние отражения для указанного ключа.384385*key* – это уже открытый ключ или одна из предопределённых [констант HKEY\_\*](https://python-all.ru/3.15/library/winreg.html#hkey-constants).386387Возвращает `True`, если отражение отключено.388389Обычно вызывает [`NotImplementedError`](https://python-all.ru/3.15/library/exceptions.html#NotImplementedError) при выполнении в 32-разрядной операционной системе.390391Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.QueryReflectionKey` с аргументом `key`.392393## Константы394395Следующие константы определены для использования во многих функциях `winreg`.396397### Константы HKEY\_\*398399#### `winreg.HKEY_CLASSES_ROOT`400401Записи реестра, подчинённые этому ключу, определяют типы (или классы) документов и свойства, связанные с этими типами. Оболочка и COM-приложения используют информацию, хранящуюся в этом ключе.402403#### `winreg.HKEY_CURRENT_USER`404405Записи реестра, подчинённые этому ключу, определяют настройки текущего пользователя. Эти настройки включают параметры переменных среды, данные о группах программ, цветах, принтерах, сетевых подключениях и настройках приложений.406407#### `winreg.HKEY_LOCAL_MACHINE`408409Записи реестра, подчинённые этому ключу, определяют физическое состояние компьютера, включая данные о типе шины, системной памяти и установленном оборудовании и программном обеспечении.410411#### `winreg.HKEY_USERS`412413Записи реестра, подчинённые этому ключу, определяют конфигурацию пользователя по умолчанию для новых пользователей локального компьютера и конфигурацию для текущего пользователя.414415#### `winreg.HKEY_PERFORMANCE_DATA`416417Записи реестра, подчинённые этому ключу, позволяют получить доступ к данным производительности. На самом деле эти данные не хранятся в реестре; функции реестра заставляют систему собирать их из источника.418419#### `winreg.HKEY_CURRENT_CONFIG`420421Содержит информацию о текущем профиле оборудования локальной компьютерной системы.422423#### `winreg.HKEY_DYN_DATA`424425Этот ключ не используется в версиях Windows после 98.426427### Права доступа428429За дополнительными сведениями см. [Безопасность и доступ к ключам реестра](https://python-all.ru/3.15/library/winreg.html).430431#### `winreg.KEY_ALL_ACCESS`432433Объединяет права доступа STANDARD\_RIGHTS\_REQUIRED, [`KEY_QUERY_VALUE`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_QUERY_VALUE), [`KEY_SET_VALUE`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_SET_VALUE), [`KEY_CREATE_SUB_KEY`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_CREATE_SUB_KEY), [`KEY_ENUMERATE_SUB_KEYS`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_ENUMERATE_SUB_KEYS), [`KEY_NOTIFY`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_NOTIFY) и [`KEY_CREATE_LINK`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_CREATE_LINK).434435#### `winreg.KEY_WRITE`436437Объединяет права доступа STANDARD\_RIGHTS\_WRITE, [`KEY_SET_VALUE`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_SET_VALUE) и [`KEY_CREATE_SUB_KEY`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_CREATE_SUB_KEY).438439#### `winreg.KEY_READ`440441Combines the STANDARD\_RIGHTS\_READ, [`KEY_QUERY_VALUE`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_QUERY_VALUE), [`KEY_ENUMERATE_SUB_KEYS`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_ENUMERATE_SUB_KEYS), and [`KEY_NOTIFY`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_NOTIFY) values.442443#### `winreg.KEY_EXECUTE`444445Эквивалентно [`KEY_READ`](https://python-all.ru/3.15/library/winreg.html#winreg.KEY_READ).446447#### `winreg.KEY_QUERY_VALUE`448449Требуется для запроса значений ключа реестра.450451#### `winreg.KEY_SET_VALUE`452453Требуется для создания, удаления или установки значения реестра.454455#### `winreg.KEY_CREATE_SUB_KEY`456457Требуется для создания вложенного ключа реестра.458459#### `winreg.KEY_ENUMERATE_SUB_KEYS`460461Требуется для перечисления вложенных ключей реестра.462463#### `winreg.KEY_NOTIFY`464465Требуется для запроса уведомлений об изменениях для ключа реестра или для его вложенных ключей.466467#### `winreg.KEY_CREATE_LINK`468469Зарезервировано для использования системой.470471#### Специфично для 64-разрядной версии472473За дополнительными сведениями см. [Доступ к альтернативному представлению реестра](https://python-all.ru/3.15/library/winreg.html).474475#### `winreg.KEY_WOW64_64KEY`476477Указывает, что приложение в 64-разрядной Windows должно работать с 64-разрядным представлением реестра. В 32-разрядной Windows эта константа игнорируется.478479#### `winreg.KEY_WOW64_32KEY`480481Указывает, что приложение в 64-разрядной Windows должно работать с 32-разрядным представлением реестра. В 32-разрядной Windows эта константа игнорируется.482483### Типы значений484485Для получения дополнительной информации см. [Типы значений реестра](https://python-all.ru/3.15/library/winreg.html).486487#### `winreg.REG_BINARY`488489Двоичные данные в любом виде.490491#### `winreg.REG_DWORD`49249332-разрядное число.494495#### `winreg.REG_DWORD_LITTLE_ENDIAN`49649732-разрядное число в формате little-endian. Эквивалентно [`REG_DWORD`](https://python-all.ru/3.15/library/winreg.html#winreg.REG_DWORD).498499#### `winreg.REG_DWORD_BIG_ENDIAN`50050132-разрядное число в формате big-endian.502503#### `winreg.REG_EXPAND_SZ`504505Строка, завершающаяся нулевым символом, содержащая ссылки на переменные окружения (`%PATH%`).506507#### `winreg.REG_LINK`508509Символическая ссылка в Юникоде.510511#### `winreg.REG_MULTI_SZ`512513Последовательность строк, завершающихся нулевым символом, оканчивающаяся двумя нулевыми символами. (Python обрабатывает это завершение автоматически.)514515#### `winreg.REG_NONE`516517Неопределённый тип значения.518519#### `winreg.REG_QWORD`52052164-разрядное число.522523Добавлено в версии 3.6.524525#### `winreg.REG_QWORD_LITTLE_ENDIAN`52652764-разрядное число в формате little-endian. Эквивалентно [`REG_QWORD`](https://python-all.ru/3.15/library/winreg.html#winreg.REG_QWORD).528529Добавлено в версии 3.6.530531#### `winreg.REG_RESOURCE_LIST`532533Список ресурсов драйвера устройства.534535#### `winreg.REG_FULL_RESOURCE_DESCRIPTOR`536537Параметр оборудования.538539#### `winreg.REG_RESOURCE_REQUIREMENTS_LIST`540541Список аппаратных ресурсов.542543#### `winreg.REG_SZ`544545Нуль-терминированная строка.546547## Объекты дескрипторов реестра548549Этот объект оборачивает объект HKEY Windows и автоматически закрывает его при уничтожении. Чтобы гарантированно выполнить очистку, можно вызвать либо метод [`Close()`](https://python-all.ru/3.15/library/winreg.html#winreg.PyHKEY.Close) этого объекта, либо функцию [`CloseKey()`](https://python-all.ru/3.15/library/winreg.html#winreg.CloseKey).550551Все функции реестра в этом модуле возвращают один из таких объектов.552553Все функции реестра в этом модуле, которые принимают объект дескриптора, также принимают целое число, однако рекомендуется использовать объект дескриптора.554555Объекты дескрипторов поддерживают семантику [`__bool__()`](https://python-all.ru/3.15/reference/datamodel.html#object.__bool__) – поэтому556557```python558if handle:559 print("Yes")560```561562будет выведено `Yes`, если дескриптор в данный момент действителен (не был закрыт или отсоединён).563564Объект также поддерживает семантику сравнения на равенство, поэтому дескрипторы будут считаться равными, если они оба ссылаются на одно и то же значение базового дескриптора Windows. Закрытые дескрипторы (со значением дескриптора, равным нулю) всегда равны друг другу.565566Объекты дескрипторов можно преобразовать в целое число (например, с помощью встроенной функции [`int()`](https://python-all.ru/3.15/library/functions.html#int)), в этом случае возвращается соответствующее значение дескриптора Windows. Также можно использовать метод [`Detach()`](https://python-all.ru/3.15/library/winreg.html#winreg.PyHKEY.Detach), чтобы вернуть целочисленный дескриптор и отсоединить дескриптор Windows от объекта дескриптора.567568#### `PyHKEY.Close()`569570Закрывает соответствующий дескриптор Windows.571572Если дескриптор уже закрыт, ошибка не возникает.573574#### `PyHKEY.Detach()`575576Отсоединяет дескриптор Windows от объекта дескриптора.577578Результат – целое число, содержащее значение дескриптора до его отсоединения. Если дескриптор уже отсоединён или закрыт, возвращается ноль.579580После вызова этой функции дескриптор фактически становится недействительным, но не закрывается. Эту функцию следует вызывать, когда требуется, чтобы базовый дескриптор Win32 существовал дольше, чем объект дескриптора.581582Вызывает [событие аудита](https://python-all.ru/3.15/library/sys.html#auditing) `winreg.PyHKEY.Detach` с аргументом `key`.583584#### `PyHKEY.__enter__()`585586#### `PyHKEY.__exit__(*exc_info)`587588Объект HKEY реализует [`__enter__()`](https://python-all.ru/3.15/reference/datamodel.html#object.__enter__) и [`__exit__()`](https://python-all.ru/3.15/reference/datamodel.html#object.__exit__) и, таким образом, поддерживает протокол контекста для оператора [`with`](https://python-all.ru/3.15/reference/compound_stmts.html#with):589590```python591with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key:592 ... # работа с ключом593```594595будет автоматически закрывать *key* при выходе управления из блока [`with`](https://python-all.ru/3.15/reference/compound_stmts.html#with).596597Изменено в версии 3.15:Объекты дескрипторов теперь сравниваются по значению дескриптора Windows вместо сравнения по идентичности объектов для проверки равенства.598