Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器怎么解决?解决方法分享

对于一般情况来说 , 我们用得最多的可能是使用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 。
具体如下:

Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器怎么解决?解决方法分享

文章插图
以上参数就是为了接收Web中的连接地址 , 在此地址中我们传入一些参数 , 来实现与exe的参数的传递.
【Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器怎么解决?解决方法分享】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程序时 , 必须同步注册一下注册表信息:
Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器怎么解决?解决方法分享

文章插图
附件做了个简单的例子 , 来实现Web系统与本地exe的通讯 。(说明:附件只是一个参考例子)
以上 , 只是我想到的比较通用的Web系统调用客户端Mac地址的方法 。如果大家有更好的办法 , 欢迎大家提出讨论 。谢谢 。


    推荐阅读