如何在Window 64bit系统上面区分此应用程序是32bit还是64bit的呢?

翻译 2014年12月19日 23:22:52

为了保持向下兼容性,大都数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
}







Android APK 在32bit 和64bit 的区别问题

目前64bit android系统也慢慢的多了,看到也有apk声称支持64bit system,然后就往里面打包搞了个arm64-v8a 目录,放了个64bit的so,但是apk代码里面却不按规范...
  • sergeycao
  • sergeycao
  • 2016年03月29日 10:26
  • 3171

32bit 和 64bit系统的区别

转载地址:http://www.cnblogs.com/ggjucheng/archive/2011/12/15/2288919.html 前言 32位和64位系统在计算机领域中常常提及,但是仍然...
  • liuxingrui4p
  • liuxingrui4p
  • 2015年03月24日 22:03
  • 2039

切换32位64位AIX系统内核

 bootinfo -y 处理器位数  bootinfo -K 内核位数   1, How to Switch AIX5.1 from 32-bit to 64-bit:  ln -sf /us...
  • hanyu1980
  • hanyu1980
  • 2008年05月12日 17:13
  • 2551

如何查看LINUX系统是32bit还是64bit

Linux: Find If Processor (CPU) is 64 bit / 32 bit [long mode ~ lm] by NIXCRAFT on APRIL 30, 200...
  • loryliu
  • loryliu
  • 2015年02月09日 21:29
  • 1192

Android L版本中实现32bit userspace程序能通过ioctl()系统调用与64bit的kernel driver中的unlocked_ioctl()接口

Android L版本中实现32bit userspace程序能通过ioctl()系统调用与64bit的kernel driver中的unlocked_ioctl()接口 [DESCRIPTION]...
  • sandform
  • sandform
  • 2016年05月20日 15:22
  • 339

解决64bit下无法运行32bit软件

32bit的应用程序时无法直接在64bit的系统上运行的,但是为了保证32bit的应用程序能在64bit的系统上运行,微软提供了一个WOW64(Windows-on-Windows 64-bit )的...
  • zhouhoujia
  • zhouhoujia
  • 2012年02月29日 19:46
  • 1694

64bit系统下兼容oracle32bit问题

※环境 OS:windows server 2008R2 64bit. 开发工具: VS2010 (NetFv4.0)+ C# + NHibernate + OracleClient Oracl...
  • jtlyr
  • jtlyr
  • 2013年01月08日 18:31
  • 873

32bit程序调用64bit dll 的解决办法

32bit程序调用64bit dll 的解决办法 32bit程序不能直接调用64bit的dll,我们采用COM进程外组件的方式来实现间接调用。 简单来说就是编写COM进程外组件,封装64位dl...
  • shakesky
  • shakesky
  • 2014年04月09日 14:07
  • 2564

Linux是32bit还是64bit

如何查看Linux是32bit还是64bit 1、uname -a 32位: Linux zou-acertox42 2.6.38-10-generic #46-Ubuntu S...
  • ljh618625
  • ljh618625
  • 2017年03月28日 22:44
  • 121

区分ubuntu 32bit or 64bit

uname -a 相于使用所参数          uname -s 显示内核名字          uname -n 显示网络节点主机名          uname -r 显示内核发行...
  • kyliner1234
  • kyliner1234
  • 2014年10月09日 17:12
  • 160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在Window 64bit系统上面区分此应用程序是32bit还是64bit的呢?
举报原因:
原因补充:

(最多只允许输入30个字)