11

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 64ビットを使用しています。私が間違っていることは何か分かりますか?これは私を夢中にさせています。ありがとう...

4

2 に答える 2

11

アクセス キーを 64 ビット アクセス キーの 1 つと組み合わせる必要があります。

_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))
于 2013-05-29T00:11:59.493 に答える
6

Python の 64 ビット バージョンも使用していますか、それとも 32 ビット Python ですか? (後者の方が一般的です。) 32 ビット バージョンの Python を使用している場合、_winregモジュールは既定で 32 ビットのレジストリを認識しますが、regedit は 64 ビットのレジストリを表示します。_winreg別のビューを開くように指示できるはずです。_winregアクセス権に関するモジュールのドキュメント、特に64 ビット固有のフラグに関するサブセクションとそれが参照する MSDN の記事を参照してください。残念ながら、32 ビット プロセスが 64 ビット レジストリにアクセスする方法はないようですが、何か不足している可能性があります。

于 2012-02-19T12:32:27.560 に答える