Я пытаюсь извлечь некоторые данные из реестра Windows, как утилит программного обеспечения, так и ntuser.dat с компьютеров XP. В настоящее время я использую reg.exe
для загрузки улья и _winreg
для извлечения данных. Мне нужно использовать reg.exe
, поскольку компьютеры, на которых я выполняю резервное копирование данных, обычно находятся в автономном режиме, и я кладу жесткий диск из них во внешний отсек и загружая ульи из этого в другой сеанс Windows. Невозможно загрузить резервные копии компьютеров, поскольку они часто терпят неудачу на жестких дисках или иным образом не загружаются.
Я видел утилиту под названием hivex
, которая работает под Linux, которая объединяет c-модуль с оболочкой python, чтобы разрешить доступ только для чтения (ограниченная запись) к реестру Windows без использования API-интерфейсов реестра Windows. К сожалению, не существует версии Windows hivex
, предположительно потому, что никто не решил получить доступ к реестру Windows под Windows, напрямую обратившись к файлам куста.
Мне бы хотелось сбросить зависимость reg.exe
, вызываемую subprocess.Popen()
, поскольку вызов внешнего исполняемого файла имеет множество проблем, а также делает ограниченную платформу для резервного копирования.
Кто-нибудь знает о модуле python, который позволяет напрямую получать доступ к файлам куста? Я уже знаю, и в настоящее время я использую _winreg
, поэтому предложение о том, что будет менее полезным. Спасибо заранее.
Я не уверен, насколько это лучше, но библиотека pywin32 предоставляет привязки для большинства API окон. Я не очень хорошо знаю API окон, чтобы узнать, можете ли вы открывать произвольные файлы кустов, однако это может стоить быстрого обзора (релиз содержит CHM с полным сопоставлением API).
Является ли ваша проблема вызовом внешнего приложения или использованием API-интерфейсов реестра? Если это первый, вы можете самостоятельно загрузить и выгрузить кусты, используя RegLoadKey/RegUnLoadKey. Если это последний, то я уверен, что кто-то написал C-библиотеку для непосредственного анализа ульев. Быстрый поиск в Google дал мне Microsoft Offline Registry Library.
Был ли у вас взгляд на regobj, он обеспечивает доступ к значению реестра для pythonic (но он по-прежнему основан на _winreg)
_winreg
разрешает доступ только через API реестра в Windows, на чем основан regobj
. На самом деле я использую regobj
, но не стал упоминать об этом, поскольку он ничем не отличается от непосредственного использования _winreg
, за исключением того, что он более питонический.
import pywin32
выдает исключение ,