Python: доступ к кустам реестра Windows НЕ использует API-интерфейсы реестра - PullRequest
1 голос
/ 04 мая 2011

Я пытаюсь извлечь из реестра 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, поэтому предположение, что это будет менее чем полезно. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 04 мая 2011

Я не уверен, насколько она лучше, но библиотека pywin32 предоставляет привязки к большинству Windows API.Я недостаточно хорошо знаком с Windows API, чтобы знать, можно ли открыть произвольные файлы кустов, но это может стоить быстрого взгляда (релиз содержит CHM с полным отображением API).

0 голосов
/ 05 мая 2011

Ваша проблема с вызовом внешнего приложения или использованием API реестра?Если это первое, вы можете загружать и выгружать ульи самостоятельно, используя RegLoadKey / RegUnLoadKey .Если это последнее, то я уверен, что кто-то написал C-библиотеку для прямого анализа ульев.Быстрый поиск в Google дал мне автономную библиотеку реестра Microsoft .

0 голосов
/ 04 мая 2011

Вы смотрели на regobj , он обеспечивает питонный доступ к значению реестра (но он все еще основан на _winreg)

...