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.Вызывает событие аудита auditing event
winreg.ConnectRegistryс аргументамиcomputer_name,key.Изменено в версии 3.3: См. выше.
-
winreg.CreateKey(key, sub_key) -
Создает или открывает указанный ключ, возвращая объект дескриптора.
key — это уже открытый ключ или одна из предопределенных констант HKEY_*.
sub_key — это строка, которая определяет имя ключа, который открывает или создает этот метод.
Если key является одним из предопределенных ключей, sub_key может быть
None. В этом случае возвращаемый дескриптор является тем же дескриптором ключа, который был передан функции.Если ключ уже существует, эта функция открывает существующий ключ.
Возвращаемое значение — это дескриптор открытого ключа. Если функция завершается неудачей, возникает исключение
OSError.Вызывает событие аудита auditing event
winreg.CreateKeyс аргументамиkey,sub_key,access.Вызывает событие аудита auditing event
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.Вызывает событие аудита auditing event
winreg.CreateKeyс аргументамиkey,sub_key,access.Вызывает событие аудита auditing event
winreg.OpenKey/resultс аргументомkey.Новое в версии 3.2.
Изменено в версии 3.3: См. выше.
-
winreg.DeleteKey(key, sub_key) -
Удаляет указанный ключ.
key — это уже открытый ключ или одна из предопределенных констант HKEY_*.
sub_key — это строка, которая должна быть подключаемым ключом, указанным параметром key. Это значение не должно быть
None, и ключ не может иметь подключаемые ключи.Этот метод не может удалять ключи с подключаемыми ключами.
Если метод завершается успешно, весь ключ, включая все его значения, удаляется. Если метод завершается неудачей, возникает исключение
OSError.Вызывает событие аудита auditing event
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.Вызывает событие аудита auditing event
winreg.DeleteKeyс аргументамиkey,sub_key,access.Новое в версии 3.2.
Изменено в версии 3.3: См. выше.
-
winreg.DeleteValue(key, value) -
Удаляет именованное значение из ключа реестра.
key — это уже открытый ключ или одна из предопределенных констант HKEY_*.
value — это строка, которая определяет значение для удаления.
Вызывает событие аудита auditing event
winreg.DeleteValueс аргументамиkey,value.
-
winreg.EnumKey(key, index) -
Перечисляет подключаемые ключи открытого ключа реестра, возвращая строку.
key — это уже открытый ключ или одна из предопределенных констант HKEY_*.
index — это целое число, которое определяет индекс ключа для получения.
Функция извлекает имя одного подключаемого ключа при каждом вызове. Обычно она вызывается многократно, пока не возникнет исключение
OSError, указывающее на то, что больше нет доступных значений.Вызывает событие аудита auditing event
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 если дескриптор в настоящее время действителен (не был закрыт или отсоединён).
Объекты также поддерживают семантику сравнения, поэтому объекты дескрипторов будут сравнивать true, если оба ссылаются на одно и то же значение базового дескриптора 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/library/winreg.html