当前位置: 移动技术网 > IT编程>开发语言>.net > Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器

Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器

2017年12月12日  | 移动技术网IT编程  | 我要评论

黄山怡,中国好书,煤炭供求信息

对于一般情况来说,我们用得最多的可能是使用activex控件的方法来实现,但此方案只适用于ie浏览器。为了能兼容不同的浏览器,如firefox等,我们就需要考虑到一种比较通用的方法。此方法我们可以参考“在很多网站中,会在网页的某个地方给一个链接来直接启动qq来聊天”。这种方法可以实现web系统来调用客户端电脑的某个exe文件(前提是在客户端必须安装需调用的exe应用程序)。qq的解决方法是采用在os中注册一种自定义的协议,如:tencent://message/?uin=88888888&site=abc.com&menu=yes.

大家可以在浏览器地址栏中输入以上地址,即可弹出一个qq的聊天对话框,这样即实现了web系统与客户端本地的exe应用程序的通讯。

通过以上的方法,我们可以参考此方案来实现web系统读取到客户端电脑的mac地址等。

为了实现以上,我们大概需要以下几步:

1,首先,我们需要在数据库中建立一张表格,如:logintempinfo ,其字段有:

   loginid,macaddress  两个字段就可以了。

2,建立一个windowsform的应用程序(用于接收web传过来登录id,然后获取本地的mac地址,并update到后台的logintempinfo表中)。主要需注意的地方为:在类program.cs中的主方法main中传入一个参数,string[] args。

  具体如下:

 /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [stathread]
  static void main(string[] args)
  {
   int argslength = args.length;
   messagebox.show(argslength.tostring());
   application.enablevisualstyles();
   application.setcompatibletextrenderingdefault(false);
   if (argslength == 0)
   {
    application.run(new form1());
   }
   else
   {
    messagebox.show(args[0]);
    application.run(new form1(args[0]));
   }
  }

     以上参数就是为了接收web中的连接地址,在此地址中我们传入一些参数,来实现与exe的参数的传递.

3,我们可以在web系统的登录页login.aspx中window.onload方法中来增加一个连接地址,如:helloworld://hello_world/apara=abc001.

在页面加载完成后,先自动生成一个唯一的loginid,并将此loginid插入到表logintempinfo中,此时其macaddress是空的。

然后再自动执行一个连接:helloworld://hello_world/loginid=****  (其中****表示此次生成的唯一登录id).

此时,会自动调用本地的helloworld程序,并将以上:helloworld://hello_world/loginid=****传入到exe程序中.

在此,web程序暂停2秒,使用settimeout方法来实现,2秒后,再从数据表中取出当前登录id的mac地址(经过第四步来完成)。

4,本地exe程序接收到参数:唯一登录id后,调用一个方法来获取当前客户端电脑的mac地址,并且将此mac地址update到数据表logintempinfo中,对应的是当前登录id.

5,通过以上5步,就可以实现web系统获取客户端的mac地址来做限定验证.

特别注意,客户端在安装exe程序时,必须同步注册一下注册表信息:

windows registry editor version 5.00
[hkey_classes_root\helloworld]
@="helloworld protocol"
"url protocol"=""
[hkey_classes_root\helloworld\defaulticon]
@="e:\\hw_test\\helloworld.exe,1"
[hkey_classes_root\helloworld\shell]
@=""
[hkey_classes_root\helloworld\shell\open]
@=""
[hkey_classes_root\helloworld\shell\open\command]
@="\"e:\\hw_test\\helloworld.exe\" \"%1\""

附件做了个简单的例子,来实现web系统与本地exe的通讯。(说明:附件只是一个参考例子)

以上,只是我想到的比较通用的web系统调用客户端mac地址的方法。如果大家有更好的办法,欢迎大家提出讨论。谢谢。

附件下载地址:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网