var locator = new ActiveXObject("WbemScripting.SWbemLocator");
var service = locator.ConnectServer(".");
var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
var e = new Enumerator(properties);
var MACaddress = '';
alert("Its Inside");
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
if (p.MACAddress) {
MACaddress = MACaddress + p.MACAddress + ',';
}
}
MACaddress = MACaddress.substring(0, MACaddress.length - 1);
MACaddress = replaceAll(MACaddress, ':', '-');
location.href = location.href + '?CAT=MAC&MACAddr=' + MACaddress;
这个功能在IE中运行良好,但它在第一行本身就在mozilla firefox中破解。我将 locator.ConnectServer(“。”)更改为 locator.ConnectServer(“MACHINE”),但仍然无法在Mozilla Firefox中使用。
答案 0 :(得分:2)
简单回答:你做不到。
现代浏览器沙箱(或尝试)出于安全原因在浏览器中发生的所有事情。沙箱可防止任何直接访问系统,包括。文件系统,硬件等(这并不意味着浏览器不与硬件通信,而是因为我们没有直接访问它的用户)。
IE是唯一支持ActiveX(这是微软自己的技术)的浏览器,但出于同样的原因(主要是......)安全性,不应该依赖它。
如果您想将MAC地址用于某种唯一标识符/安全性,您可以查看新的Web Cryptography API,但是,在撰写本文时,它仍处于草稿模式而不是广泛使用支持(但将来或将来会在某个时间跨浏览器),所以目前可能不是那么有用的建议。
您可以在任何情况下使用服务器端根据各种因素生成唯一标识符,并使用cookie或localStorage等将其本地存储在浏览器中。