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。

  具体如下:

 /// <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地址的方法。如果大家有更好的办法,欢迎大家提出讨论。谢谢。

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索web
读取MAC
浏览器兼容性问题、浏览器兼容性、浏览器兼容性测试工具、360浏览器兼容模式、浏览器兼容,以便于您获取更多的相关知识。

时间: 2024-08-28 22:41:35

Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器_实用技巧的相关文章

asp.net 大文件上传 之 改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)_实用技巧

/200905/yuanma/SlickUpload.rar/200905/yuanma/Krystalware.SlickUpload.rar 复制代码 代码如下: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using S

在Global.asax文件里实现通用防SQL注入漏洞程序(适应于post/get请求)_实用技巧

首先,创建一个SQLInjectionHelper类完成恶意代码的检查 代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text.RegularExpressions; /// <summary> ///SQLInjectionHelper 的摘要说明 /// </summary> public cla

asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输_实用技巧

具体我们如何实现文件的异步刷新,目前网上已经有了很多文章来解决这个问题,但是会用到大量的javascript,由于本人编码功力尚浅,所以之今没有高清其中的所以然,但是在解决的方案中他们貌似都用到了iframe,这让我茅塞顿开,所以我就说说用这个处理刷新的思路. 首先一个实际的页面中往往是会有较多的内容,我们暂时把它分为A,B两个区域,A区域是内容区域,我们可以用updatepanel来实现异步刷新,B区域是上传区域,我们用div已经ifame占位,其中上传的具体功能实现我们可以放到C页面中,这样

exe-电脑win7系统禁止EXE文件获取数据

问题描述 电脑win7系统禁止EXE文件获取数据 怎么阻止系统通过EXE文件获取电脑的底层数据,只加载DLL可以吗?电脑能正常运行吗?求准确的解决办法,谢谢!!! 解决方案 最简单地做法是使用vmware或者virtualbox一类的虚拟机软件,在虚拟机内运行你的exe,包括磁盘序列号.bios序列号.mac地址.硬盘和磁道等等都是虚拟出来的. 解决方案二: 我是小白吗,问的可能很含糊不清,就是不加载支付宝的EXE可执行控件,只加载DLL能付款吗? 解决方案三: 注册表也是数据,如果不读取肯定是

delphi 用控件打开pdf文件无法读取pdf里的表单信息

问题描述 delphi 用控件打开pdf文件无法读取pdf里的表单信息 我用的delphi7 用的是破解版的foxit_ax_pro.ocx文件版本3.0.1.2506,用OpenFile打开一个包含表单的pdf文件,浏览正常,但用代码访问时出错(下面第二行,FNameMI存在): frm:=FoxitReaderSDK1.GetCurrentForm(); ShowMessage(frm.GetFieldByName('FNameMI').Value) ; 变成无法获取表单信息.另外单独打开该

asp.net开发中怎样去突破文件依赖缓存_实用技巧

在Web项目中可以使用Session,Application等来缓存数据,也可以使用Cache来缓存. 今天我们特别关注的是Cache缓存.Cache位于命名空间System.Web.Caching命名空间下,看到这里我们想到的是它在Web项目中使用. 说明:Cache 类不能在 ASP.NET 应用程序外使用.它是为在 ASP.NET 中用于为 Web 应用程序提供缓存而设计和测试的.在其他类型的应用程序(如控制台应用程序或 Windows 窗体应用程序)中,ASP.NET 缓存可能无法正常工

.NET Web开发之.NET MVC框架介绍_实用技巧

MVC概念 MVC是一种架构设计模式,该模式主要应用于图形化用户界面(GUI)应用程序.那么什么是MVC?MVC由三部分组成:Model(模型).View(视图)及Controller(控制器). Model即应用程序的数据模型.任何应用程序都离不开数据,数据可以存储在数据库中.磁盘文件中,甚至内存中.Model就是对这些数据的抽象,不论数据采取何种存储形式,应用程序总是能够通过Model来对数据进行操作,而不必关心数据的存储形式.数据实体类就是常用的一种Model.例如,一个客户管理应用程序使

ASP.NET 控件开发系列之图片切换web控件_实用技巧

开发系列之图片切换web控件_实用技巧-">贴出来控件页面的代码. PicList.ascx 复制代码 代码如下: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="PicList.ascx.cs" Inherits="WebParts_PicList" %> <style type="text/css"&

WIN7系统提示损坏文件无法读取分析与解决

  电脑在使用中难免会遇到一些系统错误问题,最近有用户发现win7系统桌面右下角出现"损坏文件"错误提示,导致某些程序无法读取的问题,如果用户不对这种故障现象加以重视的,可能还会出现更加严重的系统问题,那么是什么原因导致文件损坏的问题呢?又该如何解决呢? 如出现上述现象大多数是硬盘分区表损坏,导致硬盘的分区信息不能被系统正确读取,就会出现像硬盘刚出厂时未被格式化的假象.如果你还想要硬盘内的数据文件时,此时请千万不要对硬盘进行任何写操作,和格式化.找个支持RAW格式的数据恢复工具吧.如e