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.
Права доступа
Дополнительную информацию можно найти на странице 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_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-разрядные
Дополнительную информацию можно найти на странице 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_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автоматически закроет ключ, когда управление покинет блок
with.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/winreg.html