CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

请问各位如何在ASP中获取网卡mac码

楼主61800985(阿鸟)2004-09-04 14:24:27 在 Web 开发 / ASP 提问

我想在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

相关问题

  • NetBios获取网卡MAC
  • 关于获取网卡的MAC地址
  • 如何获取网卡地址(mac)?
  • 一个关于获取客户端网卡mac号的问题
  • 请问JAVA中如何获取到本机网卡的MAC码???
  • Socket怎么获取客户端的网卡地址,就是MAC
  • 获取CPU序列号或网卡的mac号
  • 怎么通过JS来获取客户端的网卡MAC
  • 100分求助:如何获取网卡MAC地址
  • vfp中如何获取本机网卡MAC地址?

关键词

得分解答快速导航

  • 帖主:61800985
  • zykj_2000
  • themedy

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo