请问各位如何在ASP中获取网卡mac码
我想在ASP中获取网卡mac码,请问该如何实现,有没有什么源码提供呢,请大家帮忙,谢谢! 问题点数:20、回复次数:9Top
1 楼zykj_2000(向MVP努力)回复于 2004-09-04 14:26:27 得分 10
前言,笔者由于前段时间要做一个MIS系统的开发,由于该MIS为一个非免费软件,故在完成该系统开发时相应的注册模块也须开发,由于为B/S结构的系统,所以在注册特征码的选择上我选择了独一无二的网卡MAC地址。闲话少说,下面切入正题。由于该系统属商业软件,故以下代码中仅包含代码思路,及简单的实现代码,具体大家可根据代码自由发挥,也可与我一起切磋。
'----------------------提取所有网卡的信息--------------------'
Public Function GetMacInfo()
On Error Resume Next
Dim fso, FileStr, AspSleepThread, CmdStr, SysDir, wshshell, CmdRe, MacFileContentFile, MacFileContent
Const MacFile = "TmpYesoulSoft001.LLP"
Set fso = Server.CreateObject("Scripting.FileSystemObject")
SysDir = Split(GlobalMod.GetSysDir, ",")(1)
If InStr(LCase(SysDir), "system32") = 0 Then
GetMacInfo = "本系统只能运行在Nt、Windows 2000、Windows.Net、Windows Xp、Windows 2003等32位系统下,不支持32位以下的系统!"
'www.knowsky.com
Exit Function
Else
CmdStr = SysDir + "\Cmd.exe /C " + SysDir + "\Ipconfig.exe /All > " + Server.MapPath(MacFile)
End If
CmdRe = Shell(CmdStr, vbHide)
If CmdRe <> 0 Then
Set MacFileContentFile = fso.OpenTextFile(Server.MapPath(MacFile), 1, False, TristateUseDefault)
'GetMacInfo = MacFileContentFile.ReadAll()
'Response.Flush
FileStr = MacFileContentFile.ReadAll()
MacFileContentFile.Close
Set MacFileContentFile = Nothing
Set AspSleepThread = Server.CreateObject("YesoulSoft.SleepThread")
'定义线程挂起的时间,这里为毫秒
AspSleepThread.SleepTime = 500
AspSleepThread.BeginSleepThread
GetMacInfo = ExecuteOne(FileStr, "Physical Address. . . . . . . . . : (.*)")
Set AspSleepThread = Nothing
Else
GetMacInfo = "系统当前无法获取您的网络信息,请检查权限继承关系后再运行本系统!"
Exit Function
End If
DelFile MacFile
Set fso = Nothing
End Function
'------------------在字符串匹配一次结果-------------------'
Public Function ExecuteOne(inpStr, PatStr)
Dim oRe, oMatch, oMatches
Set oRe = New RegExp
oRe.Pattern = PatStr
inpStr = LCase(inpStr)
oRe.IgnoreCase = True
Set oMatches = oRe.Execute(inpStr)
Set oMatch = oMatches(0)
ExecuteOne = oMatch.SubMatches(0)
End Function
代码中GETMACINFO函数仅仅可以获取首个网卡的MAC地址,至于DNS、网关等信息大家可以举一反三啊。
转自:动态网制作指南 www.knowsky.comTop
2 楼zykj_2000(向MVP努力)回复于 2004-09-04 14:27:13 得分 0
其实 刚看到这个题目,我也不知道怎么做,但是为什么 总有人想不到用google呢,这不是比来这里问问题快的多了Top
3 楼themedy(太菜了)回复于 2004-09-04 14:27:23 得分 10
注:需服务器与远程机均开户netbios查询
<%
strIP = Request.ServerVariables("REMOTE_ADDR")
strMac = GetMACAddress(strIP)
strHost = Request.ServerVariables("REMOTE_HOST")
Function GetMACAddress(strIP)
Set net = Server.CreateObject("wscript.network")
Set sh = Server.CreateObject("wscript.shell")
sh.run "%comspec% /c nbtstat -A " & strIP & " > c:" & strIP & ".txt",0,true
Set sh = nothing
Set fso = createobject("scripting.filesystemobject")
Set ts = fso.opentextfile("c:" & 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
ts.close
Set ts = nothing
fso.deletefile "c:" & strIP & ".txt"
Set fso = nothing
GetMACAddress = macaddress
End Function
%>
<HTML>
<HEAD>
<TITLE>Say Hello To the MAC MAN</TITLE>
</HEAD>
<BODY>
<%Response.Write("Your IP is : " & strIP & "<BR>" & vbcrlf)%>
<%Response.Write("Your MAC is : " & strMac & vbcrlf)%>
</BODY>
</HTML>
Top
4 楼themedy(太菜了)回复于 2004-09-04 14:29:46 得分 0
用的是另一个思路Top
5 楼injeek(injeek)回复于 2004-09-04 14:35:37 得分 0
总结:提取系统命令返回的字符串Top
6 楼sunboby(其实我爱你)回复于 2004-09-04 14:44:33 得分 0
学习Top
7 楼61800985(阿鸟)回复于 2004-09-04 17:40:04 得分 0
我利用以下代码读取网卡的MAC地址,但出现以下情况:
我要是将文本保存在C:\(不是虚拟目录)就可以,如果要保存在虚拟目录下就不行(提示文件查不到)。也就是利用
path = server.MapPath("./")
If Right(path,1)<>"\" Then path=path & "\"
就创建不了文件,否则就可以了(不过反正是虚拟目录就不行),请大家帮我解决,谢谢!
<%@ LANGUAGE="VBSCRIPT"%>
<%
on error resume next
'path = server.MapPath("./")
'If Right(path,1)<>"\" Then path=path & "\"
path="C:\"
strIP = Request.ServerVariables("REMOTE_ADDR")
strMac = GetMACAddress(strIP)
strHost = Request.ServerVariables("REMOTE_HOST")
Function GetMACAddress(strIP)
Set net = Server.CreateObject("wscript.network")
Set sh = Server.CreateObject("wscript.shell")
sh.run "%comspec% /c nbtstat -A " & strIP & " >" & path & strIP & ".txt",0,true
Set sh = nothing
Set fso = createobject("scripting.filesystemobject")
Set ts = fso.opentextfile(path & 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
ts.close
Set ts = nothing
'fso.deletefile path & strIP & ".txt"
'Set fso = nothing
GetMACAddress = macaddress
End Function
if err.number Then
response.write Err.Description
Response.end
End if
%>
<HTML>
<HEAD>
<TITLE>Say Hello To the MAC MAN</TITLE>
</HEAD>
<BODY>
<%Response.Write("Your IP is : " & strIP & "" & vbcrlf)%>
<%Response.Write("Your MAC is : " & strMac & vbcrlf)%>
</BODY>
</HTML>Top
8 楼61800985(阿鸟)回复于 2004-09-04 17:46:44 得分 0
sh.run "%comspec% /c nbtstat -A " & strIP & " >" & path & strIP & ".txt",0,true
就是这句它写不进去的。Top
9 楼mackyliu(才子-54caizi.com)回复于 2004-09-04 17:54:25 得分 0
关注一下。想知道。Top




