通过JavaScript以及ActiveX控件获得客户端的机器名
2010-09-14 13:41:39 来源:WEB开发网似乎是基于某些安全的因素,Framwork并没有给出可以获得客户端机器信息的类及方法.如果这是真的,那么我们便只能通过客户端的JavaScript代码以及ActiveX控件来实现这一功能了.在努力搜寻了一段时间之后,我找到了如下的解决方案:
1<html>
2<head>
3 <title>WMI 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>
25<body>
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控件的运行,不过我相信,这已经可以满足大部分需要用到这一功能的情景了.
Tags:通过 JavaScript 以及
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接