在Mozilla中获取MAC地址,ActiveXObject不起作用

Getting MAC Address in Mozilla, ActiveXObject is not working

本文关键字:ActiveXObject 不起作用 地址 MAC Mozilla 获取      更新时间:2023-09-26
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中被破坏。我更改了定位器。连接服务器(".")定位器。ConnectServer("MACHINE"),但它仍然无法在Mozilla Firefox中工作。

简单的答案:你不能。

出于安全原因,现代浏览器对浏览器中发生的所有事情进行沙箱(或尝试)。沙盒阻止对系统的任何直接访问,包括文件系统、硬件等(这并不意味着浏览器不与硬件通信,但作为用户,我们无法直接访问它)。

IE是唯一支持ActiveX(这是Microsoft自己的技术)的浏览器,但出于同样的原因(主要是......)安全性,不应该依赖它。

如果您想将 MAC 地址用于某种唯一标识符/安全性,您可以查看新的 Web 加密 API,但是,在撰写本文时,它仍处于草稿模式并且未得到广泛支持(但将来某个时候会或打算成为跨浏览器),所以目前可能不是那么有用的建议。

在任何情况下,您都可以使用服务器端根据各种因素生成唯一标识符,并使用 cookie 或 localStorage 等将其存储在本地浏览器中。