• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器

    对于一般情况来说,我们用得最多的可能是使用ActiveX控件的方法来实现,但此方案只适用于IE浏览器。为了能兼容不同的浏览器,如FireFox等,我们就需要考虑到一种比较通用的方法。此方法我们可以参考“在很多网站中,会在网页的某个地方给一个链接来直接启动QQ来聊天”。这种方法可以实现Web系统来调用客户端电脑的某个exe文件(前提是在客户端必须安装需调用的exe应用程序)。QQ的解决方法是采用在OS中注册一种自定义的协议,如:tencent://message/?uin=88888888Site=abc.comMenu=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地址的方法。如果大家有更好的办法,欢迎大家提出讨论。谢谢。

    附件下载地址:https://www.jb51.net/softs/200002.html

    上一篇:datagrid和repeader控件中替换标识值的方法
    下一篇:ASP.NET实现图片以二进制的形式存入数据库
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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