JavaScriptで64bit版か32bit版の判別をする方法

JavaScriptでOSが64bit版か32bit版かを判別する場合、利用できる情報はnavigator.userAgentまたはnavigator.platformとなります。
64bit版OSでもアプリケーションが32bitで実行されていると、64bit版か32bit版かの判別は難しくなります。

64bit版OS上でWin32アプリケーションを実行するためにWOW64(Windows 32-bit On Windows 64-bit)を使用していると、ユーザーエージェントにWOW64と表示されてるブラウザもあります。

[参考記事] 64bit版か32bit版のどちらかを調べる方法
[参考記事] 64bit版Windowsで32bit用のProgram Filesフォルダのパスを取得する方法

Internet Explorer 8 (32ビット版)

navigator.userAgent
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.1)
navigator.platform
Win32

Internet Explorer 8 (64ビット版)

navigator.userAgent
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
navigator.platform
Win64

Google Chrome15.0.874.121

navigator.userAgent
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
navigator.platform
Win32

Google Chrome4.0.249.89

navigator.userAgent
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
navigator.platform
Win32

Firefox3.6.24 (32ビット版)

navigator.userAgent
Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24
navigator.platform
Win32

Firefox3.7 alpha 1 (64ビット版)

navigator.userAgent
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a1pre) Gecko/20100121 Minefield/3.7a1pre
navigator.platform
Win64

Opera11.51

navigator.userAgent
Opera/9.80 (Windows NT 6.1; U; ja) Presto/2.9.168 Version/11.51
navigator.platform
Win32

Safari5.1.2

navigator.userAgent
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7
navigator.platform
Win32

『64bit版』と『32bit版か64bit版』という区別はできます。
navigator.userAgentに『Win64』または『WOW64』という文字が含まれているか、navigator.platformが『Win64』のときは64bit版といえます。

32bit版OSでは整数値の最大4,294,967,296までとなりますが、JavascriptのNumber型は、倍精度64bitフォーマット IEEE 754型(double-precision 64-bit format IEEE 754 values)で、32bitの桁数を超える整数値を扱うことができます。
このため4,294,967,296を超える整数を正しく扱えるかどうかで判別することも難しいです。

初期状態では
64ビット版WindowsXPではInternet Explorer6の32ビット版と64ビット版、 64ビット版WindowsVistaではInternet Explorer7の32ビット版と64ビット版、 64ビット版Windows7ではInternet Explorer8の32ビット版と64ビット版がそれぞれインストールされています。

これらを加味すると次のようになります。

Internet Explorer判別できる
Google Chrome最新版なら判別できる
Firefox(32ビット版)判別できない
Firefox(64ビット版)判別できる
Opera判別できない
Safari最新版なら判別できる
<p id="area_os_name"></p>
<script language="JavaScript" type="text/javascript">
<!--
var os_name = "";
var bit_name = "";
var ua = navigator.userAgent;
if (ua.match(/Win(dows )?NT 6\.1/)) {
  os_name = "Windows 7";
}else if (ua.match(/Win(dows )?NT 6\.0/)) {
  os_name = "Windows Vista";
}else if (ua.match(/Win(dows )?NT 5\.2/)) {
  os_name = "Windows Server 2003";
}else if (ua.match(/Win(dows )?(NT 5\.1|XP)/)) {
  os_name = "Windows XP";
}else if (ua.match(/Win(dows)? (9x 4\.90|ME)/)) {
  os_name = "Windows ME";
}else if (ua.match(/Win(dows )?(NT 5\.0|2000)/)) {
  os_name = "Windows 2000";
}else if (ua.match(/Win(dows )?98/)) {
  os_name = "Windows 98";
}else if (ua.match(/Win(dows )?NT( 4\.0)?/)) {
  os_name = "Windows NT";
}else if (ua.match(/Win(dows )?95/)) {
  os_name = "Windows 95";
}else if (ua.match(/Win/) || navigator.platform.indexOf("Win") != -1) {
  os_name = "Windows";
}else{
  os_name = "Windows以外";
}

if (navigator.platform=="Win64" || ua.indexOf("Win64") != -1 || ua.indexOf("WOW64") != -1) {
  bit_name = "64bit版";
}else if(ua.indexOf("MSIE") != -1){
  bit_name = "32bit版";
}

var osversion_txt = '';
if(os_name != ""){
  osversion_txt= '閲覧中のPCは<span style="font-weight:bold;color:#FF0000;">' + bit_name + os_name + '</span>です。';
}
if(bit_name == ""){
  osversion_txt = osversion_txt + '<br />Internet Explorerで見ると、OSが自動で判別されます。';
}
document.getElementById("area_os_name").innerHTML = osversion_txt;
document.getElementById("area_os_name").style.display = "";
-->
</script>

関連記事

スポンサーリンク

Calendars: update

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る