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

标签: 64位应用程序性Window操作系统Wow64
1119人阅读 评论(0) 收藏 举报
分类:

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







1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:386180次
    • 积分:6350
    • 等级:
    • 排名:第4081名
    • 原创:228篇
    • 转载:0篇
    • 译文:5篇
    • 评论:157条
    博客专栏