luren666 发表于 2015-12-17 22:48:05

[已解决]怎么样在不调用外部程序的情况快速切断本机互联网?

本帖最后由 luren666 于 2015-12-18 23:41 编辑

自己想做一个C/S的程序,服务器控制客户机的互联网通断,客户机在接收到服务器的断开互联网指令后怎么样才能快速的切断互联网呢?目前使用的方法是route delete 0.0.0.0,删除默认路由,然后循环检测是否能PING能外部网站,有没有更好的方法来实现呢?最好是不调用外部程序,可以是调用DLL或写注册表或其它方法。最好是能像route.exe命令一样重启之后能自动恢复,不需要程序来干预。

虫子樱桃 发表于 2015-12-18 11:03:24

本帖最后由 虫子樱桃 于 2015-12-18 11:22 编辑

根据外国网站代码改写,windows10 LTSB测试OK,若成功,请修改为已解决
$Obj = ObjCreate("Shell.Application")
$items = $Obj.Namespace(0x0031).Items
If IsObj($items) Then
        For $item In $items
                If $item.Name = 'Ethernet' Then;这里是要操作的网络名称
                        If StringInStr($item.Verbs.Item(0).Name, "&a") Then
                                ;启用网络
                                $item.Verbs.Item(0).DoIt
                                MsgBox(0, '', '已经启用网络')
                        EndIf
                        If StringInStr($item.Verbs.Item(0).Name, "&b") Then
                                ;禁用网络
                                $item.Verbs.Item(0).DoIt
                                MsgBox(0, '', '已经禁用网络')
                        EndIf
                EndIf
        Next
EndIf

当然,你ipconfig /release 再ipconfig /renew 下也可以的,但是前提是你的网络设置了MAC绑定上网~~,哈哈,否则有可能不奏效

luren666 发表于 2015-12-18 20:14:57

谢谢楼上的,不过不是我想要的效果,试了一下,这个等于是禁用启动网卡,禁用网卡之后服务器就没办法控制客户机了,我要的只是断开互联网,并让局域网保持正常。

luren666 发表于 2015-12-18 23:40:57

找到了几个API,GetIpForwardTableDeleteIpForwardEntryCreateIpForwardEntry,我自己尝试一下看看能不能成功吧。

luren666 发表于 2016-1-2 21:53:33

自己尝试几次,没有调用成功,不过好在论坛里面P大早就写好了相关代码,被我翻出来了。http://www.autoitx.com/forum.php?mod=viewthread&tid=26092&extra=&page=1

wsclon 发表于 2016-1-3 21:18:06

直接改操作系统路由表或者路由器路由表。

wq1282 发表于 2016-1-6 11:31:24

把 DNS 改成不存在的IP就不完事了
页: [1]
查看完整版本: [已解决]怎么样在不调用外部程序的情况快速切断本机互联网?