B/S 구조로 시스템을 구축할 때, 신원 인증과 결합하기 위해 IP, MAC 등 클라이언트에 대한 일부 정보를 얻어야 하는 경우가 많습니다. ASP.NET에서는 서버의 MAC 주소를 얻는 것이 쉽지만 클라이언트의 MAC 주소를 얻는 데는 많은 노력이 필요합니다. 일반적인 방법은 Win32API를 호출하거나 nbtstat 명령을 직접 호출하는 것입니다. 여기에는 많은 문제점이 있으며, 다른 하나는 클라이언트 측 스크립트를 직접 사용하는 것입니다. 여기서는 Javascript를 사용합니다. 이 방법의 장점은 서버 측 처리가 필요하지 않다는 것입니다. 서버 측에서 가져오는 것보다 속도와 안정성이 더 좋습니다.
html과 javascript의 구체적인 구현은 다음과 같습니다.
<HTML><HEAD><TITLE>WMI 스크립팅 HTML</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT 언어=JScript 이벤트="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 언어=JScript 이벤트=OnObjectReady(objObject,objAsyncContext) for=foo>
if(objObject.IPEnabled != null && objObject.IPEnabled != "정의되지 않음" && 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>
<본문>
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
<SCRIPT 언어=JScript>
var 서비스 = locator.ConnectServer();
varMACAddr;
varIPAddr;
var 도메인주소;
var sDNS이름;
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 값=일반 이름=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일 수 있습니다.