1

Pythonを使用してWindowsレジストリを使用して3d studio maxを見つけたいと思います。また、特定のバージョンに縛られていません。

_winreg を使用した例をいくつか見ましたが、regedit で目的のキーを確認できますが、Python 経由でアクセスできません。

必要なキーは HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\3dsMax\14.0\MAX-1:409 で、値は Installdir です。

私が使用しようとしている python スクリプトは以下のとおりです。

from _winreg import *
t = OpenKey(HKEY_LOCAL_MACHINE, r"SOFTWARE\Autodesk\3dsMax\14.0\Max-1:409", 0, KEY_READ)

#try:
i = 0
while True:
    subkey = EnumKey(t, i)
    print subkey
    i += 1

私が返すエラーは次のとおりです。

Traceback (most recent call last):
File "C:\testreg.py", line 2, in <module>
t = OpenKey(HKEY_LOCAL_MACHINE, r"SOFTWARE\Autodesk\3dsMax\14.0\Max-1:409", 0, KEY_READ)
WindowsError: [Error 2] The system cannot find the file specified

システム情報:

Windows 7 プロフェッショナル 64 ビット

Python 2.5、2.6、および 2.7 (それぞれの 32 ビット バージョン) でテスト済み

4

3 に答える 3

1

生の文字列を使用している場合は、二重のバックスラッシュを取り除きます (使用している r'foo' 構文で示されています)。

于 2012-04-12T21:28:00.210 に答える
1

3dsmax の 64 ビット バージョンを検出している場合、32 ビット プロセスでそれを探すのは困難です。64 ビットの 32 ビット プロセスでは、"便利に" レジストリ ハイブが置き換えられます。

あなたが望むなら:

hklm\SOFTWARE\autodesk\

あなたは実際に見ています:

hklm\SOFTWARE\Wow6432Node\autodesk\

32 ビット アプリケーションは 64 ビット (Windows 上) よりも前に存在していたため、レジストリとファイル システムをリダイレクトするこれらの shim がたくさんあるため、32 ビット プログラムはキーと dll を取得できますが、64 ビット プログラムは別の名前を付ける必要がありません (例: c:\windows\system64、 HKML\SOFTWARE64\ )。

64 ビット プロセスを使用して 32 ビットにアクセスする方が、その逆ではなく常に簡単だと思います。しかし、それが不可能な場合は、この質問が 64 ビット ハイブへのアクセスに役立つ可能性があります。 32 ビット Python から 64 ビット レジストリを変更する

于 2013-01-17T15:44:01.070 に答える
0

上記のものに加えて(私も64ビットのものに遭遇したことがあります)、これに関するAutodeskの公式ページがあります:

http://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/Max-SDK/files/GUID-3D358AC5-F7BE-4A03-896B-ED92AFFD24E4-htm.html

乾杯!

于 2015-01-23T18:41:58.537 に答える