如何使用JS判断操作系统为32位还是64位版本
[背景]
早先,制作根据IE版本、操作系统版本以及处理器架构自动为用户引导适合的介质供安装。原想,可以将之束之高阁,此后便高枕无忧了。昨天用户很气愤地反映了这个现象,情绪颇为激动,甚至对目前的单位发了一通牢骚。
[问题原因]
安装64位Windows 7操作系统,使用IE 8执行脚本navigator.cpuClass返回x86而不是x64,但IE 9执行正常。
[解决思路]
客户端环境最终极的方法是通过脚本执行navigator.userAgent来获取用户更多的客户端环境信息。通过多台计算机的测试,我们发现在操作系统版本后出现WOW64或Win64信息,因此对原有判断脚本进行兼容性改写,从而解决此类问题。
当然你可以通过使用插件方式读取注册表信息或者使用WMI进行查询更多信息。但这显然需要更多的安全权限。而原始的此类做法是通过简单的通用脚本来实现的,比较更大的适用性。
相关示例代码如下:
说明:不能为了方便只判断数字为64,userAgent会带有大量的版本信息。这样去识别可能会不准确。
[延伸阅读]
如果使用注册表可以通过从获取环境变量获悉CPU处理器架构:
分支:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
键名:PROCESSOR_ARCHITECTURE
键值:AMD64、EM64T、IA64、x86等等。
相关示例代码:
Function X86orX64() 'Author: Demon 'Date: 2011/11/12 'Website: http://demon.tw On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48) For Each objItem in colItems If InStr(objItem.SystemType, "86") <> 0 Then X86orX64 = "x86" ElseIf InStr(objItem.SystemType, "64") <> 0 Then X86orX64 = "x64" Else X86orX64 = objItem.SystemType End If Next End Function WScript.Echo X86orX64()
判断端口是否被使用:
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("netstat -an")
Set oStdOut = oExec.StdOut
Do Until oStdOut.AtEndOfStream
strLine = oStdOut.ReadLine
If InStr(strLine, ":" & port) > 0 And InStrRev(strLine, "ESTABLISHED") > 0 Then
isOccupied = 1
Exit Do
End If
Loop