winreg
— Доступ к реестру Windows¶
Эти функции раскрывают API реестра Windows в Python. Вместо целого числа в качестве дескриптора реестра используется handle object для обеспечения корректного закрытия дескрипторов, даже если программист пренебрегает их явным закрытием.
Изменено в версии 3.3: Несколько функций в этом модуле раньше вызывали WindowsError
, который теперь является псевдонимом OSError
.
Функции¶
Этот модуль предлагает следующие функции:
-
winreg.
CloseKey
(hkey)¶ Закрывает ранее открытый ключ реестра. Аргумент hkey указывает ранее открытый ключ.
Примечание
Если hkey не закрыт этим методом (или через
hkey.Close()
), он будет закрыт, когда объект hkey будет уничтожен Python.
-
winreg.
ConnectRegistry
(computer_name, key)¶ Устанавливает соединение с заранее определенным дескриптором реестра на другом компьютере и возвращает handle object.
имя_компьютера - это имя удаленного компьютера, имеющее вид
r"\\computername"
. ЕслиNone
, то используется локальный компьютер.key - это предопределенный хэндл для подключения.
Возвращаемое значение - дескриптор открытого ключа. Если функция не сработает, будет вызвано исключение
OSError
.Вызывает auditing event
winreg.ConnectRegistry
с аргументамиcomputer_name
,key
.Изменено в версии 3.3: См. above.
-
winreg.
CreateKey
(key, sub_key)¶ Создает или открывает указанный ключ, возвращая handle object.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
sub_key - это строка с именем ключа, который этот метод открывает или создает.
Если key является одним из предопределенных ключей, sub_key может быть
None
. В этом случае возвращаемый хэндл будет тем же самым хэндлом ключа, который был передан в функцию.Если ключ уже существует, эта функция открывает существующий ключ.
Возвращаемое значение - дескриптор открытого ключа. Если функция не сработает, будет вызвано исключение
OSError
.Вызывает auditing event
winreg.CreateKey
с аргументамиkey
,sub_key
,access
.Вызывает auditing event
winreg.OpenKey/result
с аргументомkey
.Изменено в версии 3.3: См. above.
-
winreg.
CreateKeyEx
(key, sub_key, reserved=0, access=KEY_WRITE)¶ Создает или открывает указанный ключ, возвращая handle object.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
sub_key - это строка с именем ключа, который этот метод открывает или создает.
reserved - это зарезервированное целое число, которое должно быть равно нулю. По умолчанию это ноль.
access - целое число, задающее маску доступа, которая описывает желаемый доступ безопасности для ключа. По умолчанию
KEY_WRITE
. Смотрите Access Rights для других допустимых значений.Если key является одним из предопределенных ключей, sub_key может быть
None
. В этом случае возвращаемый хэндл будет тем же самым хэндлом ключа, который был передан в функцию.Если ключ уже существует, эта функция открывает существующий ключ.
Возвращаемое значение - дескриптор открытого ключа. Если функция не сработает, будет вызвано исключение
OSError
.Вызывает auditing event
winreg.CreateKey
с аргументамиkey
,sub_key
,access
.Вызывает auditing event
winreg.OpenKey/result
с аргументомkey
.Добавлено в версии 3.2.
Изменено в версии 3.3: См. above.
-
winreg.
DeleteKey
(key, sub_key)¶ Удаляет указанный ключ.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
sub_key - это строка, которая должна быть подключом ключа, идентифицированного параметром key. Это значение не должно быть
None
, и ключ не может иметь подключей.*Этот метод не может удалить ключи с вложенными ключами.
При успешном выполнении метода удаляется весь ключ, включая все его значения. Если метод не работает, то возникает исключение
OSError
.Вызывает auditing event
winreg.DeleteKey
с аргументамиkey
,sub_key
,access
.Изменено в версии 3.3: См. above.
-
winreg.
DeleteKeyEx
(key, sub_key, access=KEY_WOW64_64KEY, reserved=0)¶ Удаляет указанный ключ.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
sub_key - это строка, которая должна быть подключом ключа, идентифицированного параметром key. Это значение не должно быть
None
, и ключ не может иметь подключей.reserved - это зарезервированное целое число, которое должно быть равно нулю. По умолчанию это ноль.
access - целое число, задающее маску доступа, которая описывает желаемый доступ безопасности для ключа. По умолчанию
KEY_WOW64_64KEY
. В 32-битных Windows константы WOW64 игнорируются. Другие допустимые значения см. в Access Rights.*Этот метод не может удалить ключи с вложенными ключами.
При успешном выполнении метода удаляется весь ключ, включая все его значения. Если метод не работает, то возникает исключение
OSError
.В неподдерживаемых версиях Windows выдается сообщение
NotImplementedError
.Вызывает auditing event
winreg.DeleteKey
с аргументамиkey
,sub_key
,access
.Добавлено в версии 3.2.
Изменено в версии 3.3: См. above.
-
winreg.
DeleteValue
(key, value)¶ Удаляет именованное значение из ключа реестра.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
value - это строка, которая идентифицирует значение для удаления.
Вызывает auditing event
winreg.DeleteValue
с аргументамиkey
,value
.
-
winreg.
EnumKey
(key, index)¶ Перечисляет подзамки открытого ключа реестра, возвращая строку.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
index - целое число, определяющее индекс ключа для извлечения.
При каждом вызове функция извлекает имя одного подключа. Обычно она вызывается многократно до тех пор, пока не возникнет исключение
OSError
, указывающее на то, что больше нет доступных значений.Вызывает auditing event
winreg.EnumKey
с аргументамиkey
,index
.Изменено в версии 3.3: См. above.
-
winreg.
EnumValue
(key, index)¶ Перечисляет значения открытого ключа реестра, возвращая кортеж.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
index - целое число, определяющее индекс извлекаемого значения.
При каждом вызове функция извлекает имя одного подключа. Обычно она вызывается многократно, пока не возникнет исключение
OSError
, указывающее на то, что больше нет значений.Результатом является кортеж из 3 элементов:
Индекс
Значение
0
Строка, определяющая имя значения
1
Объект, который содержит данные значения, и тип которого зависит от базового типа реестра
2
Целое число, определяющее тип данных значения (см. таблицу в документации для
SetValueEx()
)Вызывает auditing event
winreg.EnumValue
с аргументамиkey
,index
.Изменено в версии 3.3: См. above.
-
winreg.
ExpandEnvironmentStrings
(str)¶ Расширяет держатели переменных окружения
%NAME%
в строках типаREG_EXPAND_SZ
:>>> ExpandEnvironmentStrings('%windir%') 'C:\\Windows'
Вызывает auditing event
winreg.ExpandEnvironmentStrings
с аргументомstr
.
-
winreg.
FlushKey
(key)¶ Записывает все атрибуты ключа в реестр.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
Для изменения ключа не обязательно вызывать
FlushKey()
. Изменения в реестре сбрасываются на диск реестром с помощью его «ленивой» программы flusher. Изменения реестра также сбрасываются на диск при выключении системы. В отличие отCloseKey()
, методFlushKey()
возвращается только тогда, когда все данные были записаны в реестр. Приложению следует вызыватьFlushKey()
только в том случае, если требуется абсолютная уверенность в том, что изменения реестра находятся на диске.Примечание
Если вы не знаете, требуется ли вызов
FlushKey()
, то, скорее всего, нет.
-
winreg.
LoadKey
(key, sub_key, file_name)¶ Создает подключ под указанным ключом и сохраняет регистрационную информацию из указанного файла в этот подключ.
key - это дескриптор, возвращаемый командой
ConnectRegistry()
или одной из константHKEY_USERS
илиHKEY_LOCAL_MACHINE
.sub_key - это строка, которая идентифицирует подключ для загрузки.
Имя_файла - это имя файла, из которого загружаются данные реестра. Этот файл должен быть создан с помощью функции
SaveKey()
. В файловой системе с таблицей распределения файлов (FAT) имя файла может не иметь расширения.Вызов команды
LoadKey()
завершится неудачей, если вызывающий процесс не имеет привилегииSE_RESTORE_PRIVILEGE
. Обратите внимание, что привилегии отличаются от разрешений - подробнее см. в RegLoadKey documentation.Если key - это дескриптор, возвращенный командой
ConnectRegistry()
, то путь, указанный в имени_файла, является относительным для удаленного компьютера.Вызывает auditing event
winreg.LoadKey
с аргументамиkey
,sub_key
,file_name
.
-
winreg.
OpenKey
(key, sub_key, reserved=0, access=KEY_READ)¶ -
winreg.
OpenKeyEx
(key, sub_key, reserved=0, access=KEY_READ)¶ Открывает указанную клавишу, возвращая handle object.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
sub_key - строка, определяющая под_ключ для открытия.
reserved - это зарезервированное целое число, которое должно быть равно нулю. По умолчанию это ноль.
access - целое число, задающее маску доступа, которая описывает желаемый доступ безопасности для ключа. По умолчанию
KEY_READ
. Смотрите Access Rights для других допустимых значений.Результатом является новое обращение к указанному ключу.
Если функция не выполнится, будет выдано сообщение
OSError
.Вызывает auditing event
winreg.OpenKey
с аргументамиkey
,sub_key
,access
.Вызывает auditing event
winreg.OpenKey/result
с аргументомkey
.Изменено в версии 3.2: Разрешить использование именованных аргументов.
Изменено в версии 3.3: См. above.
-
winreg.
QueryInfoKey
(key)¶ Возвращает информацию о ключе в виде кортежа.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
Результатом является кортеж из 3 элементов:
Индекс
Значение
0
Целое число, показывающее количество подключей, которые имеет данный ключ.
1
Целое число, показывающее количество значений, которые имеет этот ключ.
2
Целое число, указывающее время последнего изменения ключа (если доступно) в виде 100-х долей наносекунд с 1 января 1601 года.
Вызывает auditing event
winreg.QueryInfoKey
с аргументомkey
.
-
winreg.
QueryValue
(key, sub_key)¶ Получает неименованное значение для ключа в виде строки.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
sub_key - это строка, содержащая имя подключа, с которым связано значение. Если этот параметр равен
None
или пуст, функция извлекает значение, установленное методомSetValue()
для ключа, обозначенного key.Значения в реестре имеют компоненты имени, типа и данных. Этот метод извлекает данные для первого значения ключа, имеющего имя
NULL
. Но основной вызов API не возвращает тип, поэтому всегда используйтеQueryValueEx()
, если это возможно.Вызывает auditing event
winreg.QueryValue
с аргументамиkey
,sub_key
,value_name
.
-
winreg.
QueryValueEx
(key, value_name)¶ Извлекает тип и данные для указанного имени значения, связанного с открытым ключом реестра.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
Имя_значения - это строка, указывающая значение для запроса.
Результатом является кортеж из 2 элементов:
Индекс
Значение
0
Значение элемента реестра.
1
Целое число, задающее тип реестра для данного значения (см. таблицу в документации для
SetValueEx()
)Вызывает auditing event
winreg.QueryValue
с аргументамиkey
,sub_key
,value_name
.
-
winreg.
SaveKey
(key, file_name)¶ Сохраняет указанный ключ и все его подключи в указанном файле.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
имя_файла - это имя файла, в который будут сохранены данные реестра. Этот файл не может уже существовать. Если это имя файла включает расширение, его нельзя использовать в файловых системах с таблицей распределения файлов (FAT) методом
LoadKey()
.Если key представляет ключ на удаленном компьютере, путь, описанный именем_файла, является относительным для удаленного компьютера. Вызывающий этот метод должен обладать привилегией безопасности
SeBackupPrivilege
. Обратите внимание, что привилегии отличаются от разрешений - более подробно см. в Conflicts Between User Rights and Permissions documentation.Эта функция передает API
NULL
для security_attributes.Вызывает auditing event
winreg.SaveKey
с аргументамиkey
,file_name
.
-
winreg.
SetValue
(key, sub_key, type, value)¶ Связывает значение с указанным ключом.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
sub_key - это строка, которая называет подключ, с которым связано значение.
type - целое число, определяющее тип данных. В настоящее время это должно быть
REG_SZ
, то есть поддерживаются только строки. Для поддержки других типов данных используйте функциюSetValueEx()
.value - это строка, задающая новое значение.
Если ключ, указанный параметром sub_key, не существует, функция SetValue создает его.
Длина значений ограничена доступной памятью. Длинные значения (более 2048 байт) следует хранить в виде файлов, имена которых хранятся в реестре конфигурации. Это помогает реестру работать эффективно.
Ключ, идентифицируемый параметром key, должен быть открыт с доступом
KEY_SET_VALUE
.Вызывает auditing event
winreg.SetValue
с аргументамиkey
,sub_key
,type
,value
.
-
winreg.
SetValueEx
(key, value_name, reserved, type, value)¶ Сохраняет данные в поле значения открытого ключа реестра.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
Имя_значения - это строка, которая называет подключ, с которым связано значение.
reserved может быть чем угодно - ноль всегда передается API.
type - целое число, определяющее тип данных. Доступные типы см. в Value Types.
value - это строка, задающая новое значение.
Этот метод может также установить дополнительную информацию о значении и типе для указанного ключа. Ключ, идентифицируемый параметром key, должен быть открыт с доступом
KEY_SET_VALUE
.Чтобы открыть ключ, используйте методы
CreateKey()
илиOpenKey()
.Длина значений ограничена доступной памятью. Длинные значения (более 2048 байт) следует хранить в виде файлов, имена которых хранятся в реестре конфигурации. Это помогает реестру работать эффективно.
Вызывает auditing event
winreg.SetValue
с аргументамиkey
,sub_key
,type
,value
.
-
winreg.
DisableReflectionKey
(key)¶ Отключает отражение реестра для 32-битных процессов, запущенных в 64-битной операционной системе.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
При выполнении на 32-битной операционной системе, как правило, поднимается
NotImplementedError
.Если ключ не входит в список отражения, функция работает успешно, но не имеет никакого эффекта. Отключение отражения для ключа не влияет на отражение любых подключей.
Вызывает auditing event
winreg.DisableReflectionKey
с аргументомkey
.
-
winreg.
EnableReflectionKey
(key)¶ Восстанавливает отражение реестра для указанного отключенного ключа.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
При выполнении на 32-битной операционной системе, как правило, поднимается
NotImplementedError
.Восстановление отражения для ключа не влияет на отражение любых подключей.
Вызывает auditing event
winreg.EnableReflectionKey
с аргументомkey
.
-
winreg.
QueryReflectionKey
(key)¶ Определяет состояние отражения для указанной клавиши.
key - это уже открытый ключ, или один из предопределенных HKEY_* constants.
Возвращает
True
, если отражение отключено.При выполнении на 32-битной операционной системе, как правило, поднимается
NotImplementedError
.Вызывает auditing event
winreg.QueryReflectionKey
с аргументомkey
.
Константы¶
Следующие константы определены для использования во многих функциях _winreg
.
HKEY_* Константы¶
-
winreg.
HKEY_CLASSES_ROOT
¶ Записи реестра, подчиненные этому ключу, определяют типы (или классы) документов и свойства, связанные с этими типами. Приложения Shell и COM используют информацию, хранящуюся под этим ключом.
-
winreg.
HKEY_CURRENT_USER
¶ Записи реестра, подчиненные этому ключу, определяют предпочтения текущего пользователя. Эти предпочтения включают настройки переменных среды, данные о группах программ, цветах, принтерах, сетевых подключениях и предпочтениях приложений.
-
winreg.
HKEY_LOCAL_MACHINE
¶ Записи реестра, подчиненные этому ключу, определяют физическое состояние компьютера, включая данные о типе шины, системной памяти, установленном оборудовании и программном обеспечении.
-
winreg.
HKEY_USERS
¶ Записи реестра, подчиненные этому ключу, определяют конфигурацию пользователя по умолчанию для новых пользователей на локальном компьютере и конфигурацию пользователя для текущего пользователя.
-
winreg.
HKEY_PERFORMANCE_DATA
¶ Записи реестра, подчиненные этому ключу, позволяют получить доступ к данным о производительности. На самом деле данные не хранятся в реестре; функции реестра заставляют систему собирать данные из источника.
-
winreg.
HKEY_CURRENT_CONFIG
¶ Содержит информацию о текущем профиле аппаратного обеспечения локальной компьютерной системы.
-
winreg.
HKEY_DYN_DATA
¶ Этот ключ не используется в версиях Windows после 98.
Права доступа¶
Для получения дополнительной информации см. раздел Registry Key Security and Access.
-
winreg.
KEY_ALL_ACCESS
¶ Объединяет права доступа STANDARD_RIGHTS_REQUIRED,
KEY_QUERY_VALUE
,KEY_SET_VALUE
,KEY_CREATE_SUB_KEY
,KEY_ENUMERATE_SUB_KEYS
,KEY_NOTIFY
иKEY_CREATE_LINK
.
-
winreg.
KEY_WRITE
¶ Объединяет права доступа STANDARD_RIGHTS_WRITE,
KEY_SET_VALUE
иKEY_CREATE_SUB_KEY
.
-
winreg.
KEY_READ
¶ Объединяет значения STANDARD_RIGHTS_READ,
KEY_QUERY_VALUE
,KEY_ENUMERATE_SUB_KEYS
иKEY_NOTIFY
.
-
winreg.
KEY_QUERY_VALUE
¶ Требуется для запроса значений ключа реестра.
-
winreg.
KEY_SET_VALUE
¶ Требуется для создания, удаления или установки значения реестра.
-
winreg.
KEY_CREATE_SUB_KEY
¶ Требуется для создания подзаглушки ключа реестра.
-
winreg.
KEY_ENUMERATE_SUB_KEYS
¶ Требуется для перечисления подзаголовков ключа реестра.
-
winreg.
KEY_NOTIFY
¶ Требуется для запроса уведомлений об изменениях для ключа реестра или для подключей ключа реестра.
-
winreg.
KEY_CREATE_LINK
¶ Зарезервировано для системного использования.
64-битная специфика¶
Для получения дополнительной информации см. раздел Accessing an Alternate Registry View.
-
winreg.
KEY_WOW64_64KEY
¶ Указывает, что приложение на 64-битной Windows должно работать с 64-битным представлением реестра. В 32-битных Windows эта константа игнорируется.
-
winreg.
KEY_WOW64_32KEY
¶ Указывает, что приложение на 64-битной Windows должно работать с 32-битным представлением реестра. В 32-разрядных Windows эта константа игнорируется.
Типы значений¶
Для получения дополнительной информации см. раздел Registry Value Types.
-
winreg.
REG_BINARY
¶ Двоичные данные в любой форме.
-
winreg.
REG_DWORD
¶ 32-битное число.
-
winreg.
REG_DWORD_BIG_ENDIAN
¶ 32-битное число в формате big-endian.
-
winreg.
REG_EXPAND_SZ
¶ Нуль-терминированная строка, содержащая ссылки на переменные окружения (
%PATH%
).
-
winreg.
REG_LINK
¶ Символьная ссылка Unicode.
-
winreg.
REG_MULTI_SZ
¶ Последовательность строк с нулевым окончанием, завершающаяся двумя нулевыми символами. (Python обрабатывает это завершение автоматически).
-
winreg.
REG_NONE
¶ Тип значения не определен.
-
winreg.
REG_QWORD
¶ 64-битное число.
Добавлено в версии 3.6.
-
winreg.
REG_QWORD_LITTLE_ENDIAN
¶ 64-битное число в формате little-endian. Эквивалентно
REG_QWORD
.Добавлено в версии 3.6.
-
winreg.
REG_RESOURCE_LIST
¶ Список ресурсов устройств и драйверов.
-
winreg.
REG_FULL_RESOURCE_DESCRIPTOR
¶ Настройка аппаратного обеспечения.
-
winreg.
REG_RESOURCE_REQUIREMENTS_LIST
¶ Список ресурсов оборудования.
-
winreg.
REG_SZ
¶ Нуль-терминированная строка.
Объекты обращения к реестру¶
Этот объект оборачивает объект Windows HKEY, автоматически закрывая его при уничтожении объекта. Чтобы гарантировать очистку, вы можете вызвать либо метод Close()
на объекте, либо функцию CloseKey()
.
Все функции реестра в этом модуле возвращают один из этих объектов.
Все функции реестра в этом модуле, которые принимают объект handle, также принимают целое число, однако использование объекта handle приветствуется.
Объекты Handle обеспечивают семантику для __bool__()
– таким образом
if handle:
print("Yes")
выведет Yes
, если хэндл в данный момент действителен (не был закрыт или отсоединен).
Объект также поддерживает семантику сравнения, поэтому объекты handle будут сравнивать true, если они оба ссылаются на одно и то же базовое значение handle Windows.
Объекты handle можно преобразовать в целое число (например, с помощью встроенной функции int()
), в этом случае возвращается базовое значение дескриптора Windows. Вы также можете использовать метод Detach()
для возврата целочисленного хэндла, а также отсоединить хэндл Windows от объекта handle.
-
PyHKEY.
Close
()¶ Закрывает базовый дескриптор Windows.
Если ручка уже закрыта, ошибка не возникает.
-
PyHKEY.
Detach
()¶ Отсоединяет ручку Windows от объекта handle.
Результатом является целое число, содержащее значение дескриптора до его отсоединения. Если хэндл уже отсоединен или закрыт, результат возвращает ноль.
После вызова этой функции хэндл фактически аннулируется, но не закрывается. Вы можете вызвать эту функцию, если вам нужно, чтобы базовый дескриптор Win32 существовал после окончания срока жизни объекта дескриптора.
Вызывает auditing event
winreg.PyHKEY.Detach
с аргументомkey
.
-
PyHKEY.
__enter__
()¶ -
PyHKEY.
__exit__
(*exc_info)¶ Объект HKEY реализует
__enter__()
и__exit__()
и, таким образом, поддерживает контекстный протокол для оператораwith
:with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key: ... # work with key
автоматически закроет key, когда управление покинет блок
with
.