Beim Aufbau eines Systems mit einer B/S-Struktur müssen wir häufig einige Informationen über den Client erhalten, wie z. B. IP und MAC, um diese mit der Identitätsauthentifizierung zu kombinieren. In ASP.NET ist es einfach, die MAC-Adresse des Servers abzurufen, es ist jedoch sehr aufwändig, die MAC-Adresse des Clients abzurufen. Die übliche Methode besteht darin, Win32API aufzurufen oder den Befehl nbtstat direkt aufzurufen Viele Probleme damit und die andere. Die erste Methode besteht darin, clientseitige Skripte direkt zu verwenden. Der Vorteil besteht darin, dass keine serverseitige Verarbeitung erforderlich ist auf der Serverseite, und die Geschwindigkeit und Zuverlässigkeit sind besser als auf der Serverseite.
Die spezifische Implementierung von HTML und Javascript ist wie folgt:
<HTML><HEAD><TITLE>WMI-Skript-HTML</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
</SCRIPT>
<SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefiniert" && objObject.IPEnabled == true)
{
if(objObject.MACAddress != null && objObject.MACAddress != "undefiniert")
MACAddr = objObject.MACAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefiniert")
IPAddr = objObject.IPAddress(0);
if(objObject.DNSHostName != null && objObject.DNSHostName != "undefiniert")
sDNSName = objObject.DNSHostName;
}
</SCRIPT>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<KÖRPER>
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
<SCRIPT-Sprache=JScript>
var service = locator.ConnectServer();
varMACAddr;
varIPAddr;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</SCRIPT>
<FORM id=formfoo name=formbar action=NICPost.asp method=post><INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr> <INPUT value=192.168.0.2 name=txtIPAddr > <INPUT value=typ name=txtDNSName> </FORM></BODY></HTML>
Der Schlüssel liegt in der Verwendung von zwei ActiveX:
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
Diese beiden ActiveX-Dateien werden jedoch mit dem System geliefert und müssen nicht heruntergeladen oder registriert werden.
Der nächste Schritt besteht darin, ein Skript für die Interaktion mit ActiveX zu verwenden. Das Skript kann js oder Vbs sein.