0
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 で動作しません。

4

1 に答える 1

2

簡単な答え: できません。

最新のブラウザーは、セキュリティ上の理由から、ブラウザーで行われるすべてのことをサンドボックス化 (または試行) します。サンドボックス化により、システムへの直接アクセスが防止されます。ファイル システム、ハードウェアなど (ブラウザがハードウェアと通信しないという意味ではありませんが、ユーザーとして直接アクセスすることはできません)。

IE は ActiveX (Microsoft 独自のテクノロジ) をサポートする唯一のブラウザですが、(主に..) セキュリティという同じ理由で依存すべきではありません。

ある種の一意の識別子/セキュリティに MAC アドレスを使用したい場合は、代わりに新しいWeb Cryptography APIを調べることができますが、この記事の執筆時点ではまだドラフト モードであり、広くサポートされていません (ただし、 、または将来的にはクロスブラウザになる予定です)、現時点ではあまり有用なアドバイスではないかもしれません.

いずれにせよ、サーバー側を使用して、さまざまな要因に基づいて一意の識別子を生成し、Cookie または localStorage などを使用してブラウザーにローカルに保存できます。

于 2013-11-05T09:09:20.130 に答える