当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-08-25

    本文导语:  对于一般情况来说,我们用得最多的可能是使用ActiveX控件的方法来实现,但此方案只适用于IE浏览器。为了能兼容不同的浏览器,如FireFox等,我们就需要考虑到一种比较通用的方法。此方法我们可以参考“在很多网站中,会在...

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

  具体如下:

 /// 
  /// 应用程序的主入口点。
  /// 
  [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_ROOTHelloWorld]
@="HelloWorld Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOTHelloWorldDefaultIcon]
@="E:\HW_TEST\HelloWorld.exe,1"
[HKEY_CLASSES_ROOTHelloWorldshell]
@=""
[HKEY_CLASSES_ROOTHelloWorldshellopen]
@=""
[HKEY_CLASSES_ROOTHelloWorldshellopencommand]
@=""E:\HW_TEST\HelloWorld.exe" "%1""

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

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

附件下载地址:http://www./softs/200002.html


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 浏览器的Web应用测试扩展 Bonfire
  • Web 浏览器开发控件 wxWebConnect
  • linux系统web浏览器启动后又自动关闭
  • 微型的 Web 浏览器 xombrero
  • 微型Web浏览器 XXXTerm
  • 基于Web的SVN浏览器 WebSVN
  • 如开发基于linux的定制WEB浏览器
  • 富浏览器端web应用框架 ER
  • 轻量级Web浏览器 Rekonq
  • 基于文本的Web浏览器 w3m
  • Web 浏览器 ​Breach
  • Web浏览器引擎 WebKit
  • linux下设置web服务器后从浏览器访问提示连接被拒绝?!!
  • 为什么linux中的web浏览器会打不开呢 而且打开却是这种现象 参照图
  • java for web程序在浏览器显示阴影而不显示内容?
  • 有人知道哪些嵌入式linux上的web浏览器?
  • 全新的B/S结构开发方式,用纯JS+HTML实现了类似C/S的强大浏览器交互,查询及分页浏览速度提高几倍,可以成批录入数据,有完整的数据库表访问和纯web打印
  • 轻量级 Web 浏览器路由 PathJS
  • 全新的B/S结构开发方式,用纯JS+HTML实现了类似C/S的强大浏览器交互,查询及分页浏览速度提高几倍,可以成批录入数据,有完整的数据库表访问和纯web打印,统计图等
  • 请问:我做了一个小的applet,在JBuilder里web run可以,浏览器为什么不行?
  • web网页自动跳转方法:Html body onload自动跳转举例
  • 操作系统 iis7站长之家
  • Python3通过request.urlopen实现Web网页图片下载
  • SVN的Web管理界面 svn-web-admin
  • Web前端设计:Html强制不换行<nobr>标签用法代码示例
  • 嵌入式的Scala Web服务器 SOCKO WEB
  • Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
  • Web相册 Dumi Web Gallery
  • Web前端设计:html上标<sup>标签与下标<sub>标签详解
  • 请问:authorization of web services和authenication of web services什么区别?
  • Web服务器 Gatling Web Server


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3