如何使用JS判断操作系统为32位还是64位版本

技术
(2011-12-29 17:35:32)
标签:
it
分类: 技术

[背景]

早先,制作根据IE版本、操作系统版本以及处理器架构自动为用户引导适合的介质供安装。原想,可以将之束之高阁,此后便高枕无忧了。昨天用户很气愤地反映了这个现象,情绪颇为激动,甚至对目前的单位发了一通牢骚。

当出现问题时,作为开发人员或者技术研发人员,第一反应是尽可能从他的描述中提取有用信息,然后尽可能快地去解决,而不是尝试让用户去转移自己的环境。我们必须尽可能地尊重用户使用的环境。即便将来出现IE10、Windows 8,我们也要尽可能地去解决由于兼容性或者安全性问题导致应用无法正常使用的问题。

[问题原因]

安装64位Windows 7操作系统,使用IE 8执行脚本navigator.cpuClass返回x86而不是x64,但IE 9执行正常。

[解决思路]

客户端环境最终极的方法是通过脚本执行navigator.userAgent来获取用户更多的客户端环境信息。通过多台计算机的测试,我们发现在操作系统版本后出现WOW64或Win64信息,因此对原有判断脚本进行兼容性改写,从而解决此类问题。

当然你可以通过使用插件方式读取注册表信息或者使用WMI进行查询更多信息。但这显然需要更多的安全权限。而原始的此类做法是通过简单的通用脚本来实现的,比较更大的适用性。

相关示例代码如下:

function getCPU()

{

var agent=navigator.userAgent.toLowerCase();

if(agent.indexOf("win64")>=0||agent.indexOf("wow64")>=0) return "x64";

return navigator.cpuClass;

}

说明:不能为了方便只判断数字为64,userAgent会带有大量的版本信息。这样去识别可能会不准确。

[延伸阅读]

如果使用注册表可以通过从获取环境变量获悉CPU处理器架构:

分支:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

键名:PROCESSOR_ARCHITECTURE

键值:AMD64、EM64T、IA64、x86等等。

相关示例代码:

function getCPU()

{

var shell = new ActiveXObject( "Wscript.Shell");

var value= shell.RegRead ("HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\\PROCESSOR_ARCHITECTURE");



value=value.toLowerCase();

if(value.indexOf("64")>=0) return "x64";//amd64 ia64

return "x86";

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值