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 回答