当前位置:  开发笔记 > 编程语言 > 正文

从用户代理或Javascript检测64位或32位Windows?

如何解决《从用户代理或Javascript检测64位或32位Windows?》经验,为你挑选了6个好方法。

我想提供正确的下载版本.我的版本是:

32位Windows

64位Windows

Linux的

使用User Agent字段检测Linux很容易; 但是有可能可靠地判断Windows是32位还是64位?

用户可能正在使用奇怪的浏览器 - IE和Firefox很常见,我们可能在某处有Opera用户; 也许是Chrome用户.我知道64位Windows 7附带32位和64位版本的IE,我想将它们发送到我下载的64位版本.

(编辑补充:我知道我应该提供所有选项,我会.但是人们不会阅读选项.所以我希望默认提供正确的下载,以提高可用性.当然,虽然这很有帮助如果我做对了,如果我弄错的话,这是非常无益的.从目前为止的答案来看,这看起来并不是一种可行的方法.



1> saschabeaumo..:

试试这个,在用户代理字符串中查找WOW64(64位32位)或Win64(本机64位).

    if (navigator.userAgent.indexOf("WOW64") != -1 || 
        navigator.userAgent.indexOf("Win64") != -1 ){
       alert("This is a 64 bit OS");
    } else {
       alert("Not a 64 bit OS");
    }


这种方法效果很好,除了64位Windows 7上的Safari,缺少WOW64,缺少Win64,并将其`window.navigator.platform`报告为win32.我在Safari 4/Win中尝试过它; 以后的版本可能会改变
不是100%准确,但它是一个很好的线索,因为没有更好的方法可靠地检测它.

2> mgabor6..:

我做了一些测试.以下是结果,希望它有所帮助:

64 bit MacOS + 64 bit Safari or 32 bit Chrome:
window.navigator.platform=MacIntel

32 bit windows + safari:
window.navigator.platform=Win32

64 bit Windows + 64 bit IE:
window.navigator.platform=Win64
window.navigator.cpuClass=x64

64 bit Windows + 32 bit IE:
window.navigator.platform=Win32
window.navigator.cpuClass=x86

64 bit Windows + 32 Firefox (or Chrome):
window.navigator.platform=Win32

32 bit linux mint (i686) + firefox:
window.navigator.platform=Linux i686

64 bit Ubuntu (x86_64) + 32 bit Chrome:
window.navigator.platform=Linux i686

64 bit Ubuntu + 64 bit Epiphany:
window.navigator.platform=Linux x86_64

到目前为止我已经使用了这段代码:

deployJava.isWin64OS = function() {
    return navigator.userAgent.indexOf('WOW64')>-1 || window.navigator.platform=='Win64';
};



3> Luc..:

分析了大约14000个唯一用户代理(从这里开始),我想出了以下字符串来寻找:

x86_64的

X86-64

Win64平台

64; (记住分号!没有它你会有误报.)

AMD64

AMD64

WOW64

x64_64

此外,虽然它们具有不同的指令集并且与Intel x86_64不兼容,但您可能需要检测以下内容:

IA64

SPARC64

PPC64

IRIX64

请注意,不要只寻找包含"64"甚至"x64"的任何内容.Chrome的构建号,蜘蛛/机器人,库,.NET版本,分辨率等也可能包含字符串"x64",同时仍然是32位(或其他)操作系统.

请注意,您可以不区分大小写地搜索所有这些字符串.

我无法在ARM上找到任何东西.也许别人?请编辑,这是一个社区维基.



4> RC...:

你可以查看window.navigator.platformwindow.navigator.cpuClass.

我不确定你的情况,但我会考虑做大多数其他网站所做的事情,并让用户选择他们获得的下载.他们可以将它下载到另一台机器上,放在闪存设备上,或者只是想让32位版本在他们的64位盒子上运行.不管是什么原因,我宁愿做出选择.


在我工作的地方,我们已经有了很长时间的所有下载选项,但是用户经常会错误地为他们的系统下载错误的版本.
Windows 7上的Firefox,64位:`navigator.cpuClass === undefined`,`navigator.platform ==="Win32"`.IE9在同一台机器上,`navigator.cpuClsas ==="x86"`.这些都不是用于检测64位Windows的任何用途.但是,`navigator.userAgent`确实包含`WOW64`,所以答案是有效的.

5> Lee Atkinson..:

最可靠的解决方案是创建一个32位加载器应用程序来检测架构,然后下载并安装适当版本的应用程序.

我已经检查了RC和Pino的另外两个答案.它们都不能正常工作,因为你提出了同样的问题 - 64位Windows上的32位IE会错误地将平台识别为32位.由于大多数人在64位Windows上运行32位IE(许多插件,例如Flash不能在64位中使用),因此会有大量的真空识别

背风处


为什么要记下来并没有给出理由?
32位IE包含WOW64令牌,因此很容易挑选出来.

6> LiamB..:

没有100%确定性,因为你说浏览器可能是32位版本而操作系统是64位.

要检测浏览器,请尝试以下代码:

 

CPU:ia64

对于IE.

http://msdn.microsoft.com/en-us/library/ms531090%28VS.85%29.aspx

商业产品:https://www.cyscape.com/showbrow.aspx


这并不能解决原始问题.这在使用32位IE的64位Windows 7机箱上生成"x86".问题是要求检测系统位数和操作系统,而不是浏览器位数.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有