Как я могу определить местоположение 3d studio max с помощью реестра с помощью python?

Я хотел бы найти 3d studio max, используя реестр Windows, используя python. Я тоже не привязан к конкретной версии.

Я видел несколько примеров использования _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-битные версии каждой)


person JonnyRo    schedule 12.04.2012    source источник
comment
вам нужно либо использовать необработанную строку, либо экранировать обратную косую черту, но не то и другое.   -  person Dmitry B.    schedule 13.04.2012


Ответы (3)


Если вы обнаружите 64-битную версию 3dsmax, вам будет сложно найти ее с 32-битными процессами. 32-битные процессы на 64-битных «удобно» заменяют кусты реестра.

если вы хотели:

hklm\SOFTWARE\autodesk\

вы на самом деле смотрите на:

hklm\SOFTWARE\Wow6432Node\autodesk\

Поскольку 32-битные приложения существовали до 64-битных (в Windows), существует множество этих прокладок, которые перенаправляют в реестр и файловую систему, поэтому 32-битные программы получают свои ключи и DLL, не требуя, чтобы 64-битные программы называли все по-другому (например, c:\windows\system64, HKML\SOFTWARE64\ ).

Я думаю, что всегда проще использовать 64-битные процессы для доступа к 32-битным, а не наоборот. Но если это невозможно, этот вопрос может помочь вам получить доступ к 64-битному кусту. Изменить 64-битный реестр с 32-битного Python

person Ben L    schedule 17.01.2013

Избавьтесь от двойной обратной косой черты, если вы используете необработанные строки (как указано в синтаксисе r'foo', который вы используете).

person John Gaines Jr.    schedule 12.04.2012

В дополнение к сказанному (однажды я тоже столкнулся с 64-битной версией) есть официальная страница Autodesk:

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

ваше здоровье!

person ewerybody    schedule 23.01.2015