如何在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
}
时间: 2024-11-02 23:30:38

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

如何在Window 10上安装Docker

如何在Window 10上安装Docker Docker最近推出了可以运行在Win10和Mac上的稳定版本,那么在本篇博文中,我将给大家介绍如何在Windows 10上安装Docker并运行Linux和Windows Containers. Docker for Windows 10使用Microsoft Hyper-V来同时驱动Linux和Windows容器. 要在Windows 10上运行Docker,我们需要运行版本为1607或更高版本的Windows 10 Pro,Enterprise或

Win7 64bit系统WinFrom下未能加载文件或程序集“System.Data.SQLite”的解决办法

在Win7 64bit系统下调试程序时出现如下错误: 未能加载文件或程序集”System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序. 事实上System.Data.SQLite.dll控件在默认情况下是32bit的,在64bit系统下得使用另一个控件. 可以到这里http://sourceforge.net/projects/sqlite-dotnet2/files/下载一个安装程序包,安装完后在D:\Program Files (x86)\SQLite.NET\bi

Window 7系统联调打印机

window 7系统如何连接打印机 1.以前关闭过打印机的很多服务,当w7 添加打印机时,提示无法添加打印机,是因为Print Spooler这个服务被关闭了. Window 7系统联调打印机

iOS如何兼容的应用程序32位系统和64Bit系统

苹果发布iPhone5S时刻,64应用程序位去了眼前.当时我看到苹果公布的官方数据iOS7.x的SDK支撑64位应用程序.而内置的应用程序已经64位置. 我记得自己刚刚接触电脑时还有16位的系统,指针的寻址范围还是16位的.当年用TurboC时,还要依据应用的大小选择是tiny模式还是其它.后来非常长一段时间使用32位的模型编程.4G是牢牢记住的一个边界条件.而如今,64位走到了眼前. 就如同16位转向32位一样.硬件肯定是最先推出的.SDK也会跟进.然后各种第三方的应用才会逐步跟进.这个过程一

小度wifi在window server2008R2系统下创建不了

小度wifi在window server2008R2系统下创建的时候会一直显示正在创建,然后又消失的情况.这是因为win server 2008下默认的无线lan服务没开启 解决方法: 在“服务管理器”的“功能”上添加 勾选上"无线LAN服务",点击安装即可

如何在Mac OS系统下搭建Java开发环境图解

似乎有很久都没有写博客了,有工作的一些原因,也有个人的一些原因,今天刚好下雨,也没有地方可去,于是就窝在家里倒腾了下,本篇文章主要是简单介绍一下如何在Mac OS系统下搭建java的开发环境,做java开发工作,当然首先是得有一个java环境,所以接下来主要是简单介绍一下Mac环境下java环境变量的一些配置工作. 鄙人的电脑配置: 打开终端,查看10.9.5版本的系统用的是什么shell命令: 大家可以看到,控制台输出地bash,说明系统用的是Bourbe shell,是默认的Unix She

Linux Kernel sys_call_table、Kernel Symbols Export Table Generation Principle、Difference Between System Calls Entrance In 32bit、64bit Linux(undone)

目录 1. sys_call_table:系统调用表 2. 内核符号导出表.kallsyms_lookup_name 3. Linux 32bit.64bit下系统调用入口的异同 1. sys_call_table:系统调用表 Relevant Link: 2. 内核符号导出表.kallsyms_lookup_name Relevant Link: 3. Linux 32bit.64bit下系统调用入口的异同 以sys_execve.sys_socketcall.sys_init_module这

vs2008 + qt4.8(both in win7 32bit and 64bit)

目前预计的可视化开发环境为: vs2008(sp1) + QT4.8 建立于windows7.64bit系统; 使用的qt插件与qt均为32位版本: 1.安装步骤 第一步:安装VS2008(我使用的是90天试用版,需要打sp1补丁!!,请自行下载安装!). 第二步:去QT官方网站http://qt-project.org/downloads下载2个软件.1,下载安装VS2008编译过的QT库4.8:http://download.qt-project.org/official_releases/

64位系统上运行32位程序能否申请到8G内存?

申请不到,因为64为系统在运行32位程序的时候只是为了向下兼容而已,对于32位程序来讲,申请8G的存储空间没有任何意义,因为32位的程序最大寻址空间只有4G,32位程序在编译之后的机器代码也只有32位的寻址数(指针占4个字节),因此申请8G的空间是没啥意义的,而且一般系统都会为每个进程设置一些资源限制,对于32位程序其能申请的内存量也远远小于4G可以看一下下面这个表操作系统内部数据结构限制对比 IT168评测中心 分组 限制 64位Windows限制 类别 单个进程虚拟空间 4GB 16TB 用