检测当前的Windows版本是32位还是64位

问题描述 投票:63回答:23

信不信由你,我的安装程序太旧了,无法选择检测64位版本的Windows。

是否有Windows DLL调用或(甚至更好的)环境变量可以为Windows XP和Windows Vista提供该信息?

一种可能的解决方案

[我看到Wikipedia指出64位版本的Windows XP和Windows Vista具有唯一的环境变量:%ProgramW6432%,所以我猜想在32位Windows上将是空的。

此变量指向Program Files目录,该目录存储Windows和其他所有已安装的程序。英文系统的默认值为C:\Program Files。在Windows的64位版本(XP,2003,Vista)中,还有%ProgramFiles(x86)%默认为C:\Program Files (x86)%ProgramW6432%默认为C:\Program Files%ProgramFiles%本身取决于请求环境变量的进程本身是32位还是64位(这是由Windows-on-Windows 64位重定向引起的。)

信不信由你,我的安装程序太旧了,无法选择检测64位版本的Windows。是否有Windows DLL调用或(甚至更好的)环境变量会给...

windows batch-file 64-bit
23个回答

3
投票

我想在这里添加我在shell脚本中使用的内容(但是可以很容易地以任何语言使用)。原因是,此处的某些解决方案无法在WoW64上运行,某些解决方案并未真正做到这一点(检查是否存在*(x86)文件夹)或在cmd脚本中不起作用。我认为,这是执行此操作的“正确”方法,即使在将来的Windows版本中也应该是安全的。


3
投票

很多答案都提到了调用IsWoW64Process()或相关功能。这不是正确


2
投票

我不知道它在哪个Windows版本上存在,但是在Windows Vista和更高版本上运行:


1
投票

在C#中:


1
投票

我使用这个:


0
投票

我知道这很古老,但是这是我用来检测Win764的东西


0
投票

我在Windows 7 x64 / x86和Windows XP x86上测试了以下批处理文件,这很好,但是我还没有尝试过Windows XP x64,但这可能会起作用:


0
投票

使用Windows Powershell,如果以下表达式返回true,则它是64位操作系统:


0
投票

最好的方法肯定只是检查是否有两个程序文件目录,'Program Files'和'Program Files(x86)'此方法的优点是可以在操作系统未运行时执行此操作,例如,如果计算机无法启动,并且您希望重新安装操作系统,则可以执行此操作


0
投票

有趣的是,如果我使用


63
投票

要在命令框中检查Windows的64位版本,我使用以下模板:


0
投票

使用PE数量的已编译可执行文件(不依赖注册表记录或环境变量)的另一种方法created by eGerman


0
投票

这是批处理脚本的一种更简单的方法


0
投票

Windows较新版本的答案


-2
投票

检查注册表中是否存在HKLM \ SOFTWARE \ Wow6432Node-如果存在,则系统为64位-32位,否则。


20
投票

以下是一些Delphi代码,用于检查您的程序是否在64位操作系统上运行:


13
投票

我测试了我在问题中建议的解决方案:


13
投票

从批处理脚本:


8
投票

如果可以进行API调用,请尝试使用GetProcAddress / GetModuleHandle检查是否存在IsWow64Process,只有在具有64位版本的Windows操作系统中才存在。


6
投票

我在登录脚本中使用它来检测64位Windows


4
投票

对于获取OS或硬件的实际位数(32或64)的VBScript / WMI单线,请查看http://csi-windows.com/toolkit/csi-getosbits


4
投票

我不知道您使用的是哪种语言,但是如果操作系统是64位,则.NET具有环境变量PROCESSOR_ARCHITEW6432

© www.soinside.com 2019 - 2024. All rights reserved.