找回密码
 加入
搜索
查看: 1123|回复: 1

[网络通信] [已解决]如何通过iphlpapi.dll获取系统路由表,并删除默认路由0.0.0.0

[复制链接]
发表于 2021-9-3 15:00:05 | 显示全部楼层 |阅读模式
本帖最后由 fayuOmg 于 2021-9-6 08:36 编辑

最近写一个脚本,需要实时监测Windows系统的路由表,如果发现存在默认路由0.0.0.0,则删除。

根据P版提供的增删路由的脚本,链接如下:
https://www.autoitx.com/forum.ph ... 983&fromuid=7670061

提及删除路由部分的代码如下:
Func _DeleteIpForwardEntry($sDestination, $sNetworkMask, $sNextHop, $iIfIndex, $iProto = 3)
        Local $iResult, $tBuffer

        If $iIfIndex = -1 Then $iIfIndex = _GetBestInterface($sNextHop)

        $tBuffer = DllStructCreate($tagMIB_IPFORWARDROW)
        DllStructSetData($tBuffer, "Destination", _ConvertCharsToUlong($sDestination))
        DllStructSetData($tBuffer, "NetworkMask", _ConvertCharsToUlong($sNetworkMask))
        DllStructSetData($tBuffer, "NextHop", _ConvertCharsToUlong($sNextHop))
        DllStructSetData($tBuffer, "IfIndex", $iIfIndex)
        DllStructSetData($tBuffer, "Proto", $iProto)

        $iResult = DllCall($IPHLPAPI, "long", "DeleteIpForwardEntry", "ptr", DllStructGetPtr($tBuffer))
        Return SetError($iResult[0], 0, $iResult[0] = 0)
EndFunc        ;==>_DeleteIpForwardEntry


根据微软的格式要求,删除一条路由时,必须指定它的nexthop。

但是默认路由的特征很明显,它是0.0.0.0开头的,我想把目的地址是0.0.0.0的路由都给删掉(不管它的nexthop怎么变),请问iphlpapi.dll的代码要怎么写呢?
【不要调用cmd哦,这个效率太低了,因为我是后台实时监测,200ms运行一次】
发表于 2021-9-4 11:20:59 | 显示全部楼层
P版已经写出代码了
Local $sDest, $sMask, $sNextHop
Local $aRouteList = _EnumIpForwordEntries()
If Not @error Then
        For $i = 1 To $aRouteList[0][0]
                $sDest = $aRouteList[$i][0]
                $sMask = $aRouteList[$i][1]
                $sNextHop = $aRouteList[$i][3]
                If StringRegExp($sDest, '^[0\.]+$', 0) Then
                        ;//删除0.0.0.0 路由
                        If _DeleteIpForwardEntry($sDest, $sMask, $sNextHop, -1) Then
                                MsgBox(48, "OK", "Done")
                        Else
                                MsgBox(48, "Error", "Failed with error " & @error)
                        EndIf
                EndIf
        Next
EndIf



评分

参与人数 1金钱 +20 收起 理由
fayuOmg + 20 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 22:45 , Processed in 0.083516 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表