首页 > 代码库 > 如何在Window 64bit系统上面区分此应用程序是32bit还是64bit的呢?
如何在Window 64bit系统上面区分此应用程序是32bit还是64bit的呢?
为了保持向下兼容性,大都数32位的应用程序都能运行在64位的window操作系统上。大都数情况下,我们不必担心,但是有的时候,我们需要确切的知道当前的应用程序到底是32位的应用程序呢,还是64位的应用程序呢?一般来说,有下面的3种方法:
(1) 使用任务管理器识别
如下图,打开任务管理器,并选择Processes的选项卡,32位的程序,其图像名字(Image Name)会包含*32这个关键字。
比如,第一个 chrome.exe*32,这个就代表当前的chrome浏览器应用程序的版本是32位的。
(2)查看应用程序中的可执行文件的路径中是否包含(x86)的关键字
如果应用程序中的可执行文件的路径中包括x86的关键字,一般来说,这个应用程序就是32位的应用程序。
因为在装32位的应用程序的时候,操作系统会自动把安装目录“c:\Program Files“ 映射成C:\Program Files (x86)”,
这表示这个应用程序是32位的应用程序。另外,注意,有一些Window组件不在“c:\Program Files“ 目录下,而是在
C:\Windows\System32 目录下,这个时候我们不要想当然的认为这个目录下的DLL库或者Window的组件就是32位的,
其实不是的,恰恰相反,这个是64位组件的目录;真正32位组件的是放在C:\Windows\SysWow64这个目录下面的,神奇吧,
千万不要被坑了。其实也很好理解,Wow64代表Window 32 on Windows 64.
(3) 如果上面两种方法都不好使的时候,可以考虑用代码去识别
3.1 如果是Java的应用程序的话
Properties props = System.getProperties(); String bits=String.valueOf(props.get("sun.arch.data.model"));
sun.arch.data.model 有32,64或者unknown的返回值,分别对应不同的应该程序的位数。
3.2 如果是C/C++,C#的应用程序的话,我们可用PowerShell脚本
$width = [System.Runtime.InterOpServices.Marshal]::SizeOf([System.IntPtr]) if($width -eq 4){ # 32 bit }else if($width -eq 8){ # 64 bit }
如何在Window 64bit系统上面区分此应用程序是32bit还是64bit的呢?