winreg — Доступ к реестру Windows
Эти функции предоставляют доступ к API реестра Windows в Python. Вместо использования целого числа в качестве дескриптора реестра используется объект-дескриптор, чтобы гарантировать правильное закрытие дескрипторов, даже если программист забывает их явно закрыть.
Изменено в версии 3.3: Несколько функций в этом модуле использовали для повышения исключения WindowsError, которое сейчас является псевдонимом для OSError.
Функции
Этот модуль предлагает следующие функции:
-
winreg.CloseKey(hkey) -
Закрывает ранее открытый ключ реестра. Аргумент hkey указывает на ранее открытый ключ.
Примечание
Если hkey не закрыт с помощью этого метода (или с помощью
hkey.Close()), он закрывается при уничтожении объекта hkey Python.
-
winreg.ConnectRegistry(computer_name, key) -
Устанавливает соединение с предварительно определенным дескриптором реестра на другом компьютере и возвращает объект объект дескриптора.
computer_name — имя удалённого компьютера, в формате
r"\\computername". ЕслиNone, используется локальный компьютер.key — предварительно определенный дескриптор для подключения.
Значение возврата — дескриптор открытого ключа. Если функция завершилась неудачно, возникает исключение
OSError.Вызывает событие аудита событие аудита
winreg.ConnectRegistryс аргументамиcomputer_name,key.Изменено в версии 3.3: См. выше.
-
winreg.CreateKey(key, sub_key) -
Создаёт или открывает указанный ключ, возвращая объект объект дескриптора.
key — уже открытый ключ или один из предварительно определённых констант HKEY_*.
sub_key — строка, определяющая имя ключа, открываемого или создаваемого этим методом.
Если key — один из предварительно определённых ключей, sub_key может быть
None. В этом случае возвращаемый дескриптор — это тот же дескриптор ключа, переданный в функцию.Если ключ уже существует, эта функция открывает существующий ключ.
Значение возврата — дескриптор открытого ключа. Если функция завершилась неудачно, возникает исключение
OSError.Вызывает событие аудита событие аудита
winreg.CreateKeyс аргументамиkey,sub_key,access.Вызывает событие аудита событие аудита
winreg.OpenKey/resultс аргументомkey.Изменено в версии 3.3: См. выше.
-
winreg.CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE) -
Создаёт или открывает указанный ключ, возвращая объект объект дескриптора.
key — уже открытый ключ или один из предварительно определённых констант HKEY_*.
sub_key — строка, определяющая имя ключа, открываемого или создаваемого этим методом.
reserved — зарезервированное целое число, должно быть нулём. Значение по умолчанию — ноль.
access — целое число, определяющее маску доступа, описывающую требуемый уровень доступа к ключу. По умолчанию —
KEY_WRITE. См. Права доступа для других допустимых значений.Если key — один из предварительно определённых ключей, sub_key может быть
None. В этом случае возвращаемый дескриптор — это тот же дескриптор ключа, переданный в функцию.Если ключ уже существует, эта функция открывает существующий ключ.
Значение возврата — дескриптор открытого ключа. Если функция завершилась неудачно, возникает исключение
OSError.Вызывает событие аудита событие аудита
winreg.CreateKeyс аргументамиkey,sub_key,access.Вызывает событие аудита событие аудита
winreg.OpenKey/resultс аргументомkey.Добавлена в версии 3.2.
Изменено в версии 3.3: См. выше.
-
winreg.DeleteKey(key, sub_key) -
Удаляет указанный ключ.
key — уже открытый ключ или один из предварительно определённых констант HKEY_*.
sub_key — строка, которая должна быть подключаем ключа, идентифицируемого параметром key. Это значение не должно быть
None, и у ключа не должно быть подключаемых элементов.Этот метод не может удалять ключи с подключаемыми элементами.
При успешном выполнении метода весь ключ, включая все его значения, удаляется. В случае неудачи возникает исключение
OSError.Вызывает событие аудита событие аудита
winreg.DeleteKeyс аргументамиkey,sub_key,access.Изменено в версии 3.3: См. выше.
-
winreg.DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0) -
Удаляет указанный ключ.
key — уже открытый ключ или один из предварительно определённых констант HKEY_*.
sub_key — строка, которая должна быть подключаем ключа, идентифицируемого параметром key. Это значение не должно быть
None, и у ключа не должно быть подключаемых элементов.reserved — зарезервированное целое число, должно быть нулём. Значение по умолчанию — ноль.
access — целое число, определяющее маску доступа, описывающую требуемый уровень доступа к ключу. По умолчанию —
KEY_WOW64_64KEY. В 32-разрядных системах Windows константы WOW64 игнорируются. См. Права доступа для других допустимых значений.Этот метод не может удалять ключи с подключаемыми элементами.
При успешном выполнении метода весь ключ, включая все его значения, удаляется. В случае неудачи возникает исключение
OSError.В неподдерживаемых версиях Windows возникает
NotImplementedError.Вызывает событие аудита событие аудита
winreg.DeleteKeyс аргументамиkey,sub_key,access.Добавлена в версии 3.2.
Изменено в версии 3.3: См. выше.
-
winreg.DeleteValue(key, value) -
Удаляет именованное значение из ключа реестра.
key — уже открытый ключ или один из предварительно определённых констант HKEY_*.
value — строка, определяющая значение для удаления.
Вызывает событие аудита событие аудита
winreg.DeleteValueс аргументамиkey,value.
-
winreg.EnumKey(key, index) -
Перечисляет подключаемые элементы открытого ключа реестра, возвращая строку.
key — уже открытый ключ или один из предварительно определённых констант HKEY_*.
index — целое число, определяющее индекс ключа для извлечения.
Функция каждый раз возвращает имя одного подключаемого элемента. Обычно она вызывается повторно, пока не возникает исключение
OSError, означающее, что больше значений недоступно.Вызывает событие аудита событие аудита
winreg.EnumKeyс аргументамиkey,index.Изменено в версии 3.3: См. выше.
-
winreg.EnumValue(key, index) -
Перечисляет значения открытого ключа реестра, возвращая кортеж.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
index — целое число, определяющее индекс значения для извлечения.
Функция извлекает имя одного подключаемого ключа каждый раз при вызове. Обычно она вызывается многократно, пока не произойдёт исключение
OSError, указывающее на отсутствие дополнительных значений.Результат — кортеж из 3 элементов:
Индекс
Значение
0Строка, идентифицирующая имя значения
1Объект, хранящий данные значения, тип которого зависит от базового типа реестра
2Целое число, определяющее тип данных значения (см. таблицу в документации для
SetValueEx())Вызывает событие аудита аудита
winreg.EnumValueс аргументамиkey,index.Изменено в версии 3.3: См. выше.
-
winreg.ExpandEnvironmentStrings(str) -
Расширяет заполнитель переменных среды
%NAME%в строках, таких какREG_EXPAND_SZ:>>> ExpandEnvironmentStrings('%windir%') 'C:\\Windows'Вызывает событие аудита аудита
winreg.ExpandEnvironmentStringsс аргументомstr.
-
winreg.FlushKey(key) -
Записывает все атрибуты ключа в реестр.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
Вызывать
FlushKey()для изменения ключа необязательно. Изменения реестра сбрасываются на диск реестром с помощью его ленивого флушера. Изменения реестра также сбрасываются на диск при завершении работы системы. В отличие отCloseKey(), методFlushKey()возвращает только тогда, когда все данные записаны в реестр. Приложение должно вызыватьFlushKey()только в том случае, если требуется абсолютная уверенность в том, что изменения реестра находятся на диске.Примечание
Если вы не знаете, требуется ли вызов
FlushKey(), скорее всего, он не требуется.
-
winreg.LoadKey(key, sub_key, file_name) -
Создаёт подключаемый ключ под указанным ключом и сохраняет информацию регистрации из указанного файла в этот подключаемый ключ.
key — дескриптор, возвращённый
ConnectRegistry()или одной из константHKEY_USERSилиHKEY_LOCAL_MACHINE.sub_key — строка, идентифицирующая подключаемый ключ для загрузки.
file_name — имя файла для загрузки данных реестра. Этот файл должен быть создан с помощью функции
SaveKey(). В файловой системе FAT имя файла не должно иметь расширения.Вызов
LoadKey()завершается неудачно, если у вызывающего процесса нет привилегииSE_RESTORE_PRIVILEGE. Обратите внимание, что привилегии отличаются от разрешений — см. документацию RegLoadKey для получения дополнительных сведений.Если key — дескриптор, возвращённый
ConnectRegistry(), путь, указанный в file_name, является относительным к удалённому компьютеру.Вызывает событие аудита аудита
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) -
Открывает указанный ключ, возвращая объект дескриптора.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
sub_key — строка, идентифицирующая подключаемый ключ для открытия.
reserved — зарезервированное целое число и должно быть равно нулю. Значение по умолчанию равно нулю.
access — целое число, определяющее маску доступа, которая описывает желаемый доступ к безопасности ключа. Значение по умолчанию —
KEY_READ. См. Права доступа для других допустимых значений.Результат — новый дескриптор указанного ключа.
Если функция завершается неудачно, происходит поднятие исключения
OSError.Вызывает событие аудита аудита
winreg.OpenKeyс аргументамиkey,sub_key,access.Вызывает событие аудита аудита
winreg.OpenKey/resultс аргументомkey.Изменено в версии 3.2: Разрешение использования именованных аргументов.
Изменено в версии 3.3: См. выше.
-
winreg.QueryInfoKey(key) -
Возвращает информацию о ключе в виде кортежа.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
Результат — кортеж из 3 элементов:
Индекс
Значение
0Целое число, указывающее количество подключаемых ключей в этом ключе.
1Целое число, указывающее количество значений в этом ключе.
2Целое число, указывающее время последнего изменения ключа (если доступно) в сотнях наносекунд с 1 января 1601 года.
Вызывает событие аудита аудита
winreg.QueryInfoKeyс аргументомkey.
-
winreg.QueryValue(key, sub_key) -
Извлекает безымянное значение ключа в виде строки.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
sub_key — строка, содержащая имя подключаемого ключа, с которым связано значение. Если этот параметр равен
Noneили пустой, функция извлекает значение, заданное методомSetValue()для ключа, идентифицированного параметром key.Значения в реестре имеют имя, тип и компоненты данных. Этот метод извлекает данные для первого значения ключа, у которого есть имя
NULL. Но базовый вызов API не возвращает тип, поэтому всегда используйтеQueryValueEx(), если это возможно.Вызывает событие аудита аудита
winreg.QueryValueс аргументамиkey,sub_key,value_name.
-
winreg.QueryValueEx(key, value_name) -
Извлекает тип и данные для указанного имени значения, связанного с открытым ключом реестра.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
value_name — строка, указывающая значение для запроса.
Результат — кортеж из 2 элементов:
Индекс
Значение
0Значение реестровой записи.
1Целое число, указывающее тип реестра для этого значения (см. таблицу в документации для
SetValueEx())Вызывает событие аудита аудита
winreg.QueryValueс аргументамиkey,sub_key,value_name.
-
winreg.SaveKey(key, file_name) -
Сохраняет указанный ключ и все его подключаемые ключи в указанный файл.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
file_name — имя файла для сохранения данных реестра. Этот файл не может уже существовать. Если это имя файла включает расширение, его нельзя использовать в файловых системах с таблицей распределения файлов (FAT) методом
LoadKey().Если key представляет ключ на удалённом компьютере, путь, описанный file_name, относительный к удалённому компьютеру. Вызывающий метод должен обладать безопасностью SeBackupPrivilege. Обратите внимание, что привилегии отличаются от разрешений — см. документацию по конфликтам между правами пользователя и разрешениями для получения более подробной информации.
Эта функция передает
NULLдля security_attributes API.Вызывает событие аудита
winreg.SaveKeyс аргументамиkey,file_name.
-
winreg.SetValue(key, sub_key, type, value) -
Связывает значение с указанным ключом.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
sub_key — строка, которая задаёт имя подключаемого ключа, с которым связывается значение.
type — целое число, определяющее тип данных. В настоящее время поддерживаются только строки, то есть должен быть
REG_SZ. Для поддержки других типов данных используйте функциюSetValueEx().value — строка, которая задаёт новое значение.
Если ключ, заданный параметром sub_key, не существует, функция SetValue создаёт его.
Длина значений ограничена доступной памятью. Длинные значения (более 2048 байт) должны храниться как файлы с именами файлов, хранящимися в реестре конфигурации. Это помогает реестру работать эффективно.
Ключ, идентифицируемый параметром key, должен быть открыт с доступом
KEY_SET_VALUE.Вызывает событие аудита
winreg.SetValueс аргументамиkey,sub_key,type,value.
-
winreg.SetValueEx(key, value_name, reserved, type, value) -
Хранит данные в поле значения открытого ключа реестра.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
value_name — строка, которая задаёт имя подключаемого ключа, с которым связывается значение.
reserved может быть любым — всегда передаётся ноль API.
type — целое число, определяющее тип данных. См. Типы значений для доступных типов.
value — строка, которая задаёт новое значение.
Этот метод также может установить дополнительную информацию о значении и типе для указанного ключа. Ключ, идентифицируемый параметром key, должен быть открыт с доступом
KEY_SET_VALUE.Для открытия ключа используйте методы
CreateKey()илиOpenKey().Длина значений ограничена доступной памятью. Длинные значения (более 2048 байт) должны храниться как файлы с именами файлов, хранящимися в реестре конфигурации. Это помогает реестру работать эффективно.
Вызывает событие аудита
winreg.SetValueс аргументамиkey,sub_key,type,value.
-
winreg.DisableReflectionKey(key) -
Отключает отражение реестра для 32-битных процессов, выполняемых в 64-разрядной операционной системе.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
В целом вызовет
NotImplementedError, если выполняется в 32-битной операционной системе.Если ключ не находится в списке отражения, функция завершается успешно, но не оказывает никакого влияния. Отключение отражения для ключа не влияет на отражение каких-либо подключаемых ключей.
Вызывает событие аудита
winreg.DisableReflectionKeyс аргументомkey.
-
winreg.EnableReflectionKey(key) -
Восстанавливает отражение реестра для указанного отключённого ключа.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
В целом вызовет
NotImplementedError, если выполняется в 32-битной операционной системе.Восстановление отражения для ключа не влияет на отражение каких-либо подключаемых ключей.
Вызывает событие аудита
winreg.EnableReflectionKeyс аргументомkey.
-
winreg.QueryReflectionKey(key) -
Определяет состояние отражения для указанного ключа.
key — это уже открытый ключ или один из предопределённых констант HKEY_*.
Возвращает
Trueесли отражение отключено.В целом вызовет
NotImplementedError, если выполняется в 32-битной операционной системе.Вызывает событие аудита
winreg.QueryReflectionKeyс аргументомkey.
Константы
Следующие константы определены для использования во многих функциях winreg.
Константы HKEY_*
-
winreg.HKEY_CLASSES_ROOT -
Записи реестра, подчиненные этому ключу, определяют типы (или классы) документов и свойства, связанные с этими типами. Приложения оболочки и 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.
Права доступа
Для получения дополнительной информации см. Безопасность и доступ к ключам реестра.
-
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_EXECUTE -
Эквивалентно
KEY_READ.
-
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-битные специфичные
Для получения дополнительной информации см. Доступ к альтернативному представлению реестра.
-
winreg.KEY_WOW64_64KEY -
Указывает, что приложение в 64-разрядной Windows должно работать с 64-разрядным представлением реестра. В 32-разрядной Windows эта константа игнорируется.
-
winreg.KEY_WOW64_32KEY -
Указывает, что приложение в 64-разрядной Windows должно работать с 32-разрядным представлением реестра. В 32-разрядной Windows эта константа игнорируется.
Типы значений
Для получения дополнительной информации см. Типы значений реестра.
-
winreg.REG_BINARY -
Двоичные данные в любом формате.
-
winreg.REG_DWORD -
32-битное число.
-
winreg.REG_DWORD_LITTLE_ENDIAN -
32-битное число в формате little-endian. Эквивалентно
REG_DWORD.
-
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().
Все функции реестра в этом модуле возвращают один из этих объектов.
Все функции реестра в этом модуле, которые принимают объект дескриптора, также принимают целое число, однако использование объекта дескриптора рекомендуется.
Объекты дескрипторов обеспечивают семантику для __bool__() – таким образом
if handle:
print("Yes")
будет выводить Yes, если дескриптор в настоящее время действителен (не был закрыт или отсоединён).
Объекты дескрипторов также поддерживают семантику сравнения, поэтому объекты дескрипторов будут сравниваться как истинные, если оба ссылаются на одно и то же значение базового дескриптора Windows.
Объекты дескрипторов могут быть преобразованы в целое число (например, с помощью встроенной функции int()), в этом случае возвращается значение базового дескриптора Windows. Вы также можете использовать метод Detach() для возврата целого дескриптора и отключения дескриптора Windows от объекта дескриптора.
-
PyHKEY.Close() -
Закрывает базовый дескриптор Windows.
Если дескриптор уже закрыт, ошибка не возникает.
-
PyHKEY.Detach() -
Отсоединяет дескриптор Windows от объекта дескриптора.
Результатом является целое число, содержащее значение дескриптора до его отсоединения. Если дескриптор уже отсоединён или закрыт, возвращается ноль.
После вызова этой функции дескриптор фактически становится недействительным, но не закрывается. Вы вызываете эту функцию, когда вам нужно, чтобы базовый дескриптор Win32 существовал дольше срока жизни объекта дескриптора.
Возбуждает событие аудита
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.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/winreg.html