В первую очередь, я не думаю, что этим вопросом является дубликат
Обнаружьте ОС на 64 бита (окна) в Python
потому что, по моему скромному мнению, этому не полностью ответили.
Единственный приближающийся ответ:
Использовать
sys.getwindowsversion()
или существование PROGRAMFILES (X86) (if 'PROGRAMFILES(X86)' in os.environ
)
Но:
PROGRAMFILES(X86)
надежный? Я боюсь, что любой может создать его, даже если это не присутствует в системе.sys.getwindowsversion()
для получения архитектуры?Относительно sys.getwindowsversion()
:
Ссылка http://docs.python.org/library/sys.html#sys.getwindowsversion
приводит нас к http://msdn.microsoft.com/en-us/library/ms724451%28VS.85%29.aspx
но я не вижу ничего связанного с архитектурой (32bit/64bit).
Кроме того, элемент платформы в возвращенном кортеже, кажется, независим от архитектуры.
Одно последнее примечание: я ищу решение с помощью и python 2.5 и версии для Windows, запускающейся в Windows XP
Спасибо!
Править:
Соответствующая информация доступна здесь
http://msdn.microsoft.com/en-us/library/ms724340%28v=VS.85%29.aspx
но как я могу получить это с Python?
Edit2: На окна на 64 бита, с интерпретатором Python на 32 бита:
Эти переменные показывают текущий статус выполнения в windows:
@rem Test environment using this table:
@rem
@rem Environment Variable 32bit Native 64bit Native WOW64
@rem PROCESSOR_ARCHITECTURE x86 AMD64 x86
@rem PROCESSOR_ARCHITEW6432 undefined undefined AMD64
@rem
1 Другой вариант (опрос WMI для OsArchitecture):
Если вы установите pywin32 и python wmi модуль поверх, вы должны иметь возможность (но только в Windows Vista и выше!):
import wmi
c = wmi.WMI()
for os in c.Win32_OperatingSystem():
print os.osarchitecture
2 В качестве альтернативы вы также можете использовать модуль _winreg
, чтобы проверить наличие ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Wow6432Node
под HKEY_LOCAL_MACHINE
(предположительно только там в 64-битных версиях ОС) (без внешних зависимостей).