عند بناء نظام ببنية B/S، غالبًا ما نحتاج إلى الحصول على بعض المعلومات حول العميل، مثل IP وMAC، من أجل دمجها مع مصادقة الهوية. في ASP.NET، من السهل الحصول على عنوان MAC الخاص بالخادم، لكن الحصول على عنوان MAC الخاص بالعميل يتطلب الكثير من الجهد. الطريقة المعتادة هي الاتصال بـ Win32API أو الاتصال مباشرة بالأمر nbtstat هناك العديد من المشاكل في هذا، والطريقة الأخرى هي استخدام البرامج النصية من جانب العميل مباشرةً، وميزة ذلك هي أنها لا تتطلب معالجة من جانب الخادم من جانب الخادم، والسرعة والموثوقية أفضل من الحصول عليها من جانب الخادم.
التنفيذ المحدد لـ html وjavascript هو كما يلي:
<HTML><HEAD><TITLE>HTML للبرمجة النصية لـ WMI</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<لغة البرنامج النصي = حدث JScript = "OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
document.forms[0].txtMACAddr.value=unescape(MACAdr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
</SCRIPT>
<SCRIPT language=JScript events=OnObjectReady(objObject,objAsyncContext) for=foo>
إذا (objObject.IPEnabled != null && objObject.IPEnabled != "undef" && objObject.IPEnabled == true)
{
if(objObject.MACAddress != null && objObject.MACAddress != "غير محدد")
MACAddr = objObject.MACAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "غير محدد")
IPAddr = objObject.IPAddress(0);
if(objObject.DNSHostName != null && objObject.DNSHostName != "غير محدد")
sDNSName = objObject.DNSHostName;
}
</SCRIPT>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<الجسم>
<معرف الكائن=فئة تحديد الموقع=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<معرف الكائن=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
<لغة البرنامج النصي=JScript>
خدمة var = locator.ConnectServer();
varMACadr;
varIPAddr;
فار DomainAddr;
فار 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>
المفتاح هو استخدام اثنين من ActiveX:
<معرف الكائن=فئة تحديد الموقع=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<معرف الكائن=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
ومع ذلك، فإن جهازي ActiveX هذين يأتيان مع النظام ولا يحتاجان إلى تنزيلهما أو تسجيلهما.
الخطوة التالية هي استخدام البرنامج النصي للتفاعل مع ActiveX. يمكن أن يكون البرنامج النصي js أو Vbs.