เมื่อสร้างระบบที่มีโครงสร้าง B/S เรามักจะจำเป็นต้องได้รับข้อมูลบางอย่างเกี่ยวกับไคลเอนต์ เช่น IP และ MAC เพื่อรวมเข้ากับการรับรองความถูกต้องของข้อมูลประจำตัว ใน ASP.NET การรับที่อยู่ MAC ของเซิร์ฟเวอร์เป็นเรื่องง่าย แต่ต้องใช้ความพยายามอย่างมากในการรับที่อยู่ MAC ของไคลเอ็นต์ วิธีปกติคือการเรียก Win32API หรือเรียกคำสั่ง nbtstat โดยตรง ปัญหามากมายเกี่ยวกับเรื่องนี้และวิธีอื่น ๆ วิธีแรกคือการใช้สคริปต์ฝั่งไคลเอ็นต์โดยตรง เราใช้ Javascript ที่นี่ ข้อดีคือไม่ต้องการการประมวลผลฝั่งเซิร์ฟเวอร์ ไปยังฝั่งเซิร์ฟเวอร์ และความเร็วและความน่าเชื่อถือนั้นดีกว่าการได้รับจากฝั่งเซิร์ฟเวอร์
การใช้งานเฉพาะของ html และ javascript มีดังนี้:
<HTML><HEAD><TITLE>การเขียนสคริปต์ WMI HTML</TITLE>
<META http-equiv=เนื้อหาประเภทเนื้อหา="ข้อความ/html; charset=gb2312">
<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" สำหรับ=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=เหตุการณ์ JScript=OnObjectReady(objObject,objAsyncContext) สำหรับ=foo>
ถ้า (objObject.IPEnabled != null && objObject.IPEnabled != "ไม่ได้กำหนด" && objObject.IPEnabled == จริง)
-
ถ้า(objObject.MACAddress != null && objObject.MACAddress != "ไม่ได้กำหนด")
MACAddr = objObject.MACAAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "ไม่ได้กำหนด")
IPAddr = objObject.IPAddress (0);
ถ้า (objObject.DNSHostName != null && objObject.DNSHostName != "ไม่ได้กำหนด")
sDNSName = objObject.DNSHostName;
-
</SCRIPT>
<เนื้อหา META="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<ร่างกาย>
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
<ภาษาสคริปต์=JScript>
บริการ var = 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 > <ค่าอินพุต=ชื่อพิมพ์=txtDNSName> </FORM></BODY></HTML>
กุญแจสำคัญคือการใช้ ActiveX สองตัว:
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
อย่างไรก็ตาม ActiveX ทั้งสองนี้มาพร้อมกับระบบ และไม่จำเป็นต้องดาวน์โหลดหรือลงทะเบียน
ขั้นตอนต่อไปคือการใช้สคริปต์เพื่อโต้ตอบกับ ActiveX สคริปต์อาจเป็น js หรือ Vbs โดยส่วนตัวแล้วฉันชอบใช้ js