注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

临颍中远电脑科技

专业装机,网吧维护,电脑维修,网络监控,数据恢复,

 
 
 

日志

 
 

arp双绑代码  

2010-08-24 12:37:39|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
批处理很简单,但是要用VBS调用,因此我找了半天终于找到个arp双绑,但是他这个是循环绑定,关机会提示出错,有没高手改成不循环,跳出While 1 WEnd呢~
代码

#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
While 1
;++++++++++++++++++++↓自动绑定ARP功能++++++++++++++++++++++++++++
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
$colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")         
For $objItem In $colItems
;获取网关
$LocalGateway= $objItem.DefaultIPGateway(0)
;获取IP地址
$LocalIP=$objItem.IPAddress(0)
Next
;获取本机和网关的MAC
$MAC = _GetMAC ($LocalIP)
$wgMAC = _Gey ($LocalGateway)
RunWait(@ComSpec & " /c " & " ARP -d ", "", @SW_HIDE)
;绑定本机IP和MAC
RunWait(@ComSpec & " /c " & " ARP -S "& $LocalIP &" "& $MAC &"", "", @SW_HIDE)
;绑定路由网关和MAC
RunWait(@ComSpec & " /c " & " ARP -S "& $LocalGateway &" "& $wgMAC &"", "", @SW_HIDE)
WEnd

Func _GetMAC ($LocalIP)
  Local $MAC,$MACSize
  Local $i,$s,$r,$iIP
  
  $MAC = DllStructCreate("byte[6]")
  $MACSize = DllStructCreate("int")

  DllStructSetData($MACSize,1,6)
  $r = DllCall ("Ws2_32.dll", "int", "inet_addr", "str", $LocalIP)
  $iIP = $r[0]
  $r = DllCall ("iphlpapi.dll", "int", "SendARP","int", $iIP,"int", 0,"ptr", DllStructGetPtr($MAC),"ptr", DllStructGetPtr($MACSize))
  $s    = ""
  For $i = 0 To 5
      If $i Then $s = $s & "-"
      $s = $s & Hex(DllStructGetData($MAC,1,$i+1),2)
  Next
  Return $s
EndFunc


Func _Gey ($LocalGateway)
  Local $MAC,$MACSize
  Local $i,$s,$r,$iIP
  
  $MAC = DllStructCreate("byte[6]")
  $MACSize = DllStructCreate("int")

  DllStructSetData($MACSize,1,6)
  $r = DllCall ("Ws2_32.dll", "int", "inet_addr", "str", $LocalGateway)
  $iIP = $r[0]
  $r = DllCall ("iphlpapi.dll", "int", "SendARP","int", $iIP,"int", 0,"ptr", DllStructGetPtr($MAC),"ptr", DllStructGetPtr($MACSize))
  $s    = ""
  For $i = 0 To 5
      If $i Then $s = $s & "-"
      $s = $s & Hex(DllStructGetData($MAC,1,$i+1),2)
  Next
  Return $s
EndFunc
  评论这张
 
阅读(266)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017