找回密码
 加入
搜索
查看: 2324|回复: 6

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

[复制链接]
发表于 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绑定上网~~,哈哈,否则有可能不奏效
 楼主| 发表于 2015-12-18 20:14:57 | 显示全部楼层
谢谢楼上的,不过不是我想要的效果,试了一下,这个等于是禁用启动网卡,禁用网卡之后服务器就没办法控制客户机了,我要的只是断开互联网,并让局域网保持正常。
 楼主| 发表于 2015-12-18 23:40:57 | 显示全部楼层
找到了几个API,GetIpForwardTable  DeleteIpForwardEntry  CreateIpForwardEntry,我自己尝试一下看看能不能成功吧。
 楼主| 发表于 2016-1-2 21:53:33 | 显示全部楼层
自己尝试几次,没有调用成功,不过好在论坛里面P大早就写好了相关代码,被我翻出来了。
http://www.autoitx.com/forum.php?mod=viewthread&tid=26092&extra=&page=1
发表于 2016-1-3 21:18:06 | 显示全部楼层
直接改操作系统路由表或者路由器路由表。
发表于 2016-1-6 11:31:24 | 显示全部楼层
把 DNS 改成不存在的IP就不完事了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-29 01:31 , Processed in 0.086738 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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