通过JavaScript以及ActiveX控件获得客户端的机器名

阳光的石头记63

阳光的石头记63

2016-02-19 16:15

有了下面这个通过JavaScript以及ActiveX控件获得客户端的机器名教程,不懂通过JavaScript以及ActiveX控件获得客户端的机器名的也能装懂了,赶紧get起来装逼一下吧!

  目前为止,我尚没有碰到过类似的应用,或者说在需要实现类似功能的时候,我总是首先会想到如何利用客户端的IP地址来解决问题.

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  不过今天有一个客户问了这个问题,原因是在做内网测试的时候,需要通过客户端的机器名来验证某些信息.

  着手这一个案例并做了一些简单的测试之后,我发现,以下一些在网络上常见的用来获得客户端计算机名的代码被证明是错误的:

 1protected void Page_Load(object sender, EventArgs e)
 2{
 3    //获得服务器端的机器名
 4    Response.Write("System.Net.Dns.GetHostName(): ");
 5    Response.Write("b" + System.Net.Dns.GetHostName() + "/bbr /");
 6
 7    //获得服务器端的机器名
 8    Response.Write("System.Environment.MachineName: ");
 9    Response.Write("b" + System.Environment.MachineName + "/bbr /");
10
11    //在Visual Studio下运行获得当前登陆用户
12    //在IIS下运行,获得的值为空
13    Response.Write("Page.User.Identity.Name: ");
14    Response.Write("b" + Page.User.Identity.Name + "/bbr /");
15
16    //获得客户端的IP地址
17    Response.Write("Page.Request.UserHostName: ");
18    Response.Write("b" + Page.Request.UserHostName + "/bbr /");
19}

  似乎是基于某些安全的因素,Framwork并没有给出可以获得客户端机器信息的类及方法.如果这是真的,那么我们便只能通过客户端的JavaScript代码以及ActiveX控件来实现这一功能了.在努力搜寻了一段时间之后,我找到了如下的解决方案:

 1html
 2head
 3    titleWMI Scripting HTML/title
 4    script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript"
 5         document.forms[0].txtMACAddr.value=unescape(MACAddr);
 6         document.forms[0].txtIPAddr.value=unescape(IPAddr);
 7         document.forms[0].txtDNSName.value=unescape(sDNSName);
 8    /script
 9
10    script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript"
11        if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
12        {
13            if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
14                MACAddr = objObject.MACAddress;
15
16            if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")
17                IPAddr = objObject.IPAddress(0);
18
19            if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
20                sDNSName = objObject.DNSHostName;
21        }
22    /script
23
24/head
25body
26    object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" VIEWASTEXT/object
27    object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo"/object
28
29    script LANGUAGE="JScript"
30        var service = locator.ConnectServer();
31        var MACAddr ;
32        var IPAddr ;
33        var DomainAddr;
34        var sDNSName;
35        service.Security_.ImpersonationLevel=3;
36        service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
37    /script
38
39    form method="POST" action="NICPost.asp" id="formfoo" name="formbar"
40        input type="text"  name="txtMACAddr"
41        input type="text"  name="txtIPAddr"
42        input type="text"  name="txtDNSName"
43    /form
44/body
45/html
46

  测试后发现,这一解决方案不仅能够获得客户端的机器名,同时还给出了客户端机器的MAC地址,以及客户端机器所在的内网IP地址(比如192.168.0.100).只是在运行该页面的时候,浏览器会给出不安全ActiveX控件的提示,并允许客户端禁止ActiveX控件的运行,不过我相信,这已经可以满足大部分需要用到这一功能的情景了.

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

通过JavaScript以及ActiveX控件获得客户端的机器名

Web开发
通过JavaScript以及ActiveX控件获得客户端的机器名

javascript进行客户端数据的校验

Web开发
javascript进行客户端数据的校验

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

win客户端和linux客户端的区别

服务器
win客户端和linux客户端的区别

JS通过WMI获取客户端硬件信息

Web开发
JS通过WMI获取客户端硬件信息

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Zune 客户端

平面设计 标志设计 UI设计 VI设计
Zune 客户端

Javascript 验证上传图片大小[客户端]

Web开发
Javascript 验证上传图片大小[客户端]

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

利用Visual C#实现Window管道技术

利用Visual C#实现Window管道技术

在Word2010中用使键盘输入特殊符号

在Word2010中用使键盘输入特殊符号
下拉加载更多内容 ↓