不得不说IE的ActiveX的确很强大,只是限制太多,而且由于安全性问题,导致很多情况下获取不到。下面这段代码是IE通过ActiveX获取本机的内网IP和网卡的物理地址:
function GetAdapterInfo() {
var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
var service = locator.ConnectServer("."); //连接本机服务器
var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled=TRUE");
//查询使用SQL标准
var e = new Enumerator (properties);
var msg="";
for (;!e.atEnd();e.moveNext ())
{
var p = e.item ();
msg+="Caption:" + p.Caption + " "; //网卡描述,也可以使用Description
msg+="IP:" + p.IPAddress(0) + " ";//IP地址为数组类型,子网俺码及默认网关亦同
msg+="MAC:" + p.MACAddress + " "; //网卡物理地址
}
return msg;
}
alert( GetAdapterInfo());
直接双击文件打开,就能获取,但是如果放在服务器环境去访问,可能会提示“Automation 服务器不能创建对象”的错误,是因为ActiveX的安全级别设置问题(服务器环境比本地环境更加严格),可以通过工具->Internet选项->安全,点击自定义级别,弹出的弹窗中,将于ActiveX有关的都启用即可: