Web系统通过EXE文件实现读取客户电脑MAC等硬件信息且兼容非IE浏览器
来源:易贤网 阅读:1451 次 日期:2014-08-15 15:28:53
温馨提示:易贤网小编为您整理了“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。

具体如下:

01 /// <summary>

02 /// 应用程序的主入口点。

03 /// </summary>

04 [STAThread]

05 static void Main(string[] args)

06 {

07 int argsLength = args.Length;

08 MessageBox.Show(argsLength.ToString());

09 Application.EnableVisualStyles();

10 Application.SetCompatibleTextRenderingDefault(false);

11 if (argsLength == 0)

12 {

13 Application.Run(new Form1());

14 }

15 else

16 {

17 MessageBox.Show(args[0]);

18 Application.Run(new Form1(args[0]));

19 }

20 }

以上参数就是为了接收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程序时,必须同步注册一下注册表信息:

01 Windows Registry Editor Version 5.00

02 [HKEY_CLASSES_ROOT\HelloWorld]

03 @="HelloWorld Protocol"

04 "URL Protocol"=""

05 [HKEY_CLASSES_ROOT\HelloWorld\DefaultIcon]

06 @="E:\\HW_TEST\\HelloWorld.exe,1"

07 [HKEY_CLASSES_ROOT\HelloWorld\shell]

08 @=""

09 [HKEY_CLASSES_ROOT\HelloWorld\shell\open]

10 @=""

11 [HKEY_CLASSES_ROOT\HelloWorld\shell\open\command]

12 @="\"E:\\HW_TEST\\HelloWorld.exe\" \"%1\""

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

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

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标