strIP = Request.ServerVariables("REMOTE_ADDR")
strHost = Request.ServerVariables("REMOTE_HOST")
Set net = Server.CreateObject("wscript.network")
Set sh = Server.CreateObject("wscript.shell")
sh.run "%comspec% /c nbtstat -A " & strIP & " 〉 d:/www/" & strIP & ".txt",0,true
sh.run "%comspec% /c ping -a " & strIP & " 〉 d:/www/" & strIP & "ping.txt",0,true
Set sh = nothing
'分析ping命令结果获取计算机名
Function GetComputerName(strIP)
set fso=CreateObject("scripting.filesystemobject")
set ts=fso.opentextfile("d:/www/" & strIP & "ping.txt")
computername=null
do while not ts.AtEndOfStream
data = ucase(trim(ts.readline))
if instr(data,"[") then
computername=trim(split(data,"[")(0))
computername=trim(replace(computername,"PINGING",""))
exit do
end if
loop
GetComputerName=computername
End Function
'分析nbtstat命令结果获取MAC地址
Function GetMACAddress(strIP)
Set fso = createobject("scripting.filesystemobject")
Set ts = fso.opentextfile("d:/www/" & strIP & ".txt")
macaddress = null
Do While Not ts.AtEndOfStream
data = ucase(trim(ts.readline))
If instr(data,"MAC ADDRESS") Then
macaddress = trim(split(data,"=")(1))
Exit Do
End If
loop
GetMACAddress = macaddress
End Function
%>
这里很明显它获取到的是你的DNS服务器计算机名因为你的web服务器和你的客户机都不在同一个网段,
Request.UserHostName肯定是获取不到的。
这个是一个很常见的问题,Request.UserHostName有的时候获取到的还是IP而不是计算机名字。郁闷~~~我也期待高手来回答这个问题。
计算机名一般读不出来,那需要访问者安全权限设置的贼低,只能读出访问的者的操作系统型号、浏览器型号、IP地址。目前的主流做法是,通过读取出来的IP地址找出对应的城市,然后显示,“来自XX城市的用户您好,欢迎访问XX网”。当然也可以写一段JavaScript,让访问者放开权限:把以下脚本插入网页中
<SCRIPT language=javascript>
<!--Hide
function killErrors(){
alert("请将您浏览器Internet选项中的“对没有标记为安全的ActiveX控件进行初始化和脚本运行”设置为“启用”!\n\n然后刷新本页登陆!")
return true}
window.onerror = killErrors
var WshNetwork = new ActiveXObject("WScript.Network")
ComputerName=WshNetwork.ComputerName+"/"+WshNetwork.UserName
alert(ComputerName)
//-->
</SCRIPT>
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)