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
.Added in version 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
.Added in version 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¶
Записи реестра, подчиненные этому ключу, определяют типы (или классы) документов и свойства, связанные с этими типами. Приложения оболочки и 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-битное число.
Added in version 3.6.
- winreg.REG_QWORD_LITTLE_ENDIAN¶
64-битное число в формате little-endian. Эквивалентно
REG_QWORD
.Added in version 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 будут сравниваться, если они оба ссылаются на одно и то же базовое значение Windows handle.
Объекты handle можно преобразовать в целое число (например, с помощью встроенной функции int()
), в этом случае возвращается базовое значение Windows handle. Можно также использовать метод 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
автоматически закроет ключ, когда управление покинет блок
with
.