Windows 32 или 64 бит, используя HKEY_LOCAL_MACHINE \ Software \ WOW6432 Node - PullRequest
1 голос
/ 06 марта 2010

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

If Registry Key exists (HKEY_LOCAL_MACHINE\Software\WOW6432Node)
   Then Assume 64bit
else
   Assume 32bit

Спасибо! * * 1004

РЕДАКТИРОВАТЬ: если быть более точным, я знаю, что есть несколько различных способов достижения цели, чтобы определить, является ли ОС 32 или 64-битной. Но я хочу знать, будет ли вышеописанный метод надежным.

Ответы [ 4 ]

5 голосов
/ 06 марта 2010

Я предполагаю, что вы работаете в 32-битном процессе (иначе вы бы уже знали ответ). Решением вашей проблемы является IsWow64Process или GetNativeSystemInfo .

0 голосов
/ 23 мая 2014

Я надеюсь, что это может решить проблему, я попробовал это на моем Windows 8.1 64 бит и он возвращает значение AMD64 для меня

import _winreg
def get_registry_value(key, subkey, value):

  key = getattr(_winreg, key)
  handle = _winreg.OpenKey(key, subkey )
  (value, type) = _winreg.QueryValueEx(handle, value)
  return value

windowsbit = get_registry_value(
"HKEY_LOCAL_MACHINE",
"SYSTEM\\CurrentControlSet\Control\\Session Manager\\Environment",
"PROCESSOR_ARCHITECTURE")
print windowsbit

просто запустите этот код, если вы работаете на машине с 64-битным Windows, это напечатает AMD64

или, если вы работаете с 32-битной версией, он напечатает AMD32

Надеюсь, этот код поможет полностью решить эту проблему

0 голосов
/ 06 марта 2010

Почему бы не проверить наличие папки C:\Program Files (x86)?Это гарантирует, что это 64-битная ОС.

0 голосов
/ 06 марта 2010

Вы можете проверить переменную среды PROCESSOR_ARCHITECTURE. Если это AMD64, значит, вы используете 64-битную ОС, но это небезопасно (после прочтения комментариев)

Но для безопасности вы можете вызвать Win32 API IsWow64Process, как упомянуто в этом сообщении в блоге от Raymond Chen .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...