2010-03-05 36 views
1

我正在寻找一种非常简单的方式来确定客户使用的Windows版本是32位还是64位。我知道有使用.NEt的方法,但我希望避免它们。我只是想使用类似于下面的伪代码的东西,并想知道这种方法是否可靠。Windows 32或64位使用HKEY_LOCAL_MACHINE Software WOW6432节点

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

谢谢!

编辑:更具体地说,我知道有几种不同的方法来完成目标,如果操作系统是32位或64位。但我想知道上述单独的方法是否可靠。

回答

0

为什么不检查文件夹C:\Program Files (x86)的存在?这会向你保证它是一个64位的操作系统。

+0

...除非某些程序将其作为其安装的一部分创建,尽管它安装在一台32位机器。 :-) – 2010-03-05 21:22:32

+0

非常不可能,但可能^^ – aefxx 2010-03-05 21:45:00

+2

...或者你正在运行一个本地化版本的Windows – erikkallen 2010-03-05 22:50:26

0

您可以检查环境变量PROCESSOR_ARCHITECTURE。如果是AMD64那么你是一个64位的操作系统,但这并不安全(阅读评论)之后

但是为了安全起见,你可以调用Win32 API中,IsWow64Process从Raymond Chen在这个blog post提及。

+1

...除非在脚本运行在c:\ windows \ syswow64 \ cmd.exe中,其中定义为* PROCESSOR_ARCHITECTURE = x86 *,并且存在单独的* PROCESSOR_ARCHITEW6432 = AMD64 * – 2010-03-05 21:24:05

0

我希望这能解决我想它在我的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

我希望这段代码可以帮助解决这个问题完全

相关问题