11

我有以下问题:我有一个网络服务器。该网络服务器位于路由器后面。问题是,我需要一个客户端的 MAC 地址,以便在服务器上打开一个网站以供进一步使用。我已经尝试通过 ActiveX-Object 获取 MAC 地址,但客户端需要安装 WMI。这是实际的代码:

<!DOCTYPE  HTML  PUBLIC  "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
        <title></title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        <script id="clientEventHandlersJS" language="javascript">

function Button1_onclick() {
  var locator = new ActiveXObject("WbemScripting.SWbemLocator");
  var service = locator.ConnectServer(".");
  var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
  var e = new Enumerator (properties);
  document.write("<table border=1>");
  dispHeading();
  for (;!e.atEnd();e.moveNext ())
  {
        var p = e.item ();
        document.write("<tr>");
        document.write("<td>" + p.Caption + "</td>");
        document.write("<td>" + p.IPFilterSecurityEnabled + "</td>");
        document.write("<td>" + p.IPPortSecurityEnabled + "</td>");
        document.write("<td>" + p.IPXAddress + "</td>");
        document.write("<td>" + p.IPXEnabled + "</td>");
        document.write("<td>" + p.IPXNetworkNumber + "</td>");
        document.write("<td>" + p.MACAddress + "</td>");
        document.write("<td>" + p.WINSPrimaryServer + "</td>");
        document.write("<td>" + p.WINSSecondaryServer + "</td>");
        document.write("</tr>");
  }
  document.write("</table>");
}

function dispHeading()
{
    document.write("<thead>");
    document.write("<td>Caption</td>");
    document.write("<td>IPFilterSecurityEnabled</td>");
    document.write("<td>IPPortSecurityEnabled</td>");
    document.write("<td>IPXAddress</td>");
    document.write("<td>IPXEnabled</td>");
    document.write("<td>IPXNetworkNumber</td>");
    document.write("<td>MACAddress</td>");
    document.write("<td>WINSPrimaryServer</td>");
    document.write("<td>WINSSecondaryServer</td>");
    document.write("</thead>");
}

        </script>
  </head>
  <body>

        <INPUT id="Button1" type="button" value="Button" name="Button1" language="javascript" onclick="return Button1_onclick()">
  </body>

当您单击该按钮时,它应该返回一个包含网络配置的表格,但这对我不起作用。我想知道,是否有另一种解决方案可以通过浏览器获取客户端的 MAC 地址。我也不想限制在 Internet Explorer 上的使用。在此先感谢您的帮助。

问候,克里斯

4

2 回答 2

7

看来您可以使用 Java 小程序执行此操作,请参阅https://forums.oracle.com/forums/thread.jspa?threadID=1144276http://techdetails.agwego.com/2008/02/11上的帖子/37/

不确定您是否需要用户为此同意安全警告,我没有尝试过。

可能没有更好的方法,因为 ActiveX 只能在 Windows(和 IE)上工作,并且没有这样的 API 可以在任何标准 HTML 或 JavaScript 中获取 MAC 地址。我不知道 Flash 是否对此有用,但我对此表示怀疑。

但是,您获取用户 MAC 地址的理由似乎是有效的,但我仍然认为推断它的任何信息都不是一个好主意,因为它可能被欺骗/更改,并且在某些情况下可能无法正确显示。如果你能为你的问题想出一个更好的解决方案(不涉及抓取 MAC 地址),你会做得更好。

于 2012-04-23T09:08:07.190 回答
2

在我之前的项目中。我们在浏览器 javascript 中使用 websocket 与在同一台机器上运行的本地代码 C# dll 进行通信。本机代码可以检索任何系统信息、MAC 地址和其他系统信息,如内存、磁盘空间等。Node.js 也可以用来代替 C#,只是为了打破 windows 机器的限制,进入 MAC 机器。整个应用程序(chrome 浏览器 + 本机代码)已使用 install shield 下载到客户端。

于 2017-06-17T13:20:17.490 回答