Python _winreg горе

Я пытаюсь получить доступ к реестру Windows (в Python) для запроса значения ключа с помощью _winreg, и я не могу заставить его работать. Следующая строка возвращает WindowsError о том, что "система не может найти указанный файл":

key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Autodesk\Maya\2012\Setup\InstallPath', 0, _winreg.KEY_ALL_ACCESS)

После нескольких часов попыток, похоже, что Python не может видеть за пределами части пути Maya (похоже, что подпуть "2012\...etc..." является "невидимым" или не существует). Теперь у меня открыт редактор реестра, и я гарантирую, что в HKLM есть такой путь. Я на Windows 7 64bit. Есть идеи, что я делаю не так? Это сводит меня с ума. Спасибо...

2 ответа

Вам необходимо объединить ключ доступа с одним из 64-битных ключей доступа.

_winreg.KEY_WOW64_64KEY Указывает, что приложение в 64-битной Windows должно работать в 64-битном представлении реестра.

_winreg.KEY_WOW64_32KEY Указывает, что приложение в 64-битной Windows должно работать в 32-битном представлении реестра.

Пытаться:

_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Autodesk\Maya\2012\Setup\InstallPath', 0, (_winreg.KEY_WOW64_64KEY + _winreg.KEY_ALL_ACCESS))

Вы также используете 64-битную версию Python или это 32-битный Python? (Последнее встречается чаще.) Если вы используете 32-битную версию Python, _winreg модуль будет видеть 32-битный реестр по умолчанию, а regedit покажет вам 64-битный. Вы должны быть в состоянии сказать _winreg открыть другой взгляд; увидеть _winreg модуль посвящен правам доступа, в частности подразделу о 64-битных специальных флагах и статье MSDN, на которую он ссылается. К сожалению, не похоже, что 32-битный процесс может получить доступ к 64-битному реестру, но я могу что-то упустить.

Другие вопросы по тегам