如何一次性添加/删除多条路由。

believe_me 2012-08-10 11:21:28
我使用route add/del进行路由的添加,尤其需要添加的路由条数较多,耗时比较长。
可不可以用route一次添加或者删除多条路由的,我也试过CreateIpForwordRow函数,但是一直调用成功。
我用如下的方法进行路由添加,添加路由的时候CPU会占用到100%。
环境为WIN7 + VS2008。

while(...)
{
WinExec("route add 1.1.1.1 mask 2.2.2.2 3.3.3.3", SW_HIDE);
Sleep(50);
}
...全文
1407 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
believe_me 2012-08-15
  • 打赏
  • 举报
回复
可以查看我的博客进行探讨。
believe_me 2012-08-15
  • 打赏
  • 举报
回复
已经用CreateIpForwordRow等API自己解决。
believe_me 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

第二个方案,为什么不用 脚本啊。
[/Quote]
因为要多次添加路由,而且每次路由都不一样。
这样的话需要每次都要重新生成脚本,然后再调用。
titer1 2012-08-10
  • 打赏
  • 举报
回复
第二个方案,为什么不用 脚本啊。
titer1 2012-08-10
  • 打赏
  • 举报
回复

快速批量添加路由表的小方法

2012-05-21 19:28:55| 分类: 默认分类 | 标签:网络 系统 |字号 订阅
有些时候需要向windows系统中添加路由表,只有一两条时在命令行下手动输入“route add”命令即可,数量稍多时编辑个批处理也好解决。但若有几千条以上时,添加路由的批处理会运行的较慢,CPU一直在100%高悬,风扇呼呼作响,配置一般点的笔记本电脑运行个十分、八分钟都有可能。
若网络环境稳定、网关不变,倒也好办,执行“route -p add”命令添加永久路由表,就不必每次重启机都忍受漫长的添加过程了。
像是笔记本电脑,若经常变换网络环境,家里、办公室、出差...上述办法就显得不那么合适了。这时可以采用如下办法:

方法一:调用cmroute.dll,快速添加路由表。
注:本法对于一般的pppoe拨号仍有效(win7下电信宽带pppoe拨号测试通过,只不过稍慢因其中一个系统svchost.exe进程占用一会cpu,机制不明)
新建一个文件夹,准备如下文件:
1、cmroute.dll
这个动态连接库,系统中没有的话,可以从网上自行搜索下载,猛击这里也提供下载(整个文件夹)。
2、addroutes.bat
建立批处理文件内容如下(引号中),用于调用cmroute.dll从而快速添加路由表:

echo 正在添加路由表......
rundll32.exe cmroute.dll,SetRoutes /STATIC_FILE_NAME addchnroutes.txt /DONT_REQUIRE_URL /IPHLPAPI_ACCESS_DENIED_OK


3、addchnroutes.txt
建立txt文件,内含路由表信息,上面的批处理调用这个txt文件,格式如下(引号中):
“add 1.0.1.0 mask 255.255.255.0 default METRIC default IF default”

4、delroutes.bat
上面添加的都是活动路由,重启之后即消失。若要立即删除上述路由则建立:
delroutes.bat,内容如下(引号中)

echo 正在删除路由表......
rundll32.exe cmroute.dll,SetRoutes /STATIC_FILE_NAME delchnroutes.txt /DONT_REQUIRE_URL /IPHLPAPI_ACCESS_DENIED_OK


跟上面添加路由的批处理格式完全一样,不同之处在于读取的txt文件不同。
5、delchnroutes.txt
删除路由表批处理读取的txt文件,ip地址、子网掩码跟添加的一样,add换成delete而已,如下(引号中)
“delete 1.0.1.0 mask 255.255.255.0 default METRIC default IF default”

方法二:使用SetRoute软件
一个流传于网上的小程序,估计为复旦学生开发,本用于教育网环境。但具有备份、恢复路由表的功能,可以在运行于常用网络环境时,比如网关为192.168.1.1、192.168.0.1时等等,先运行一下诸如chnroutes的添加路由表批处理,慢就慢这一回,然会使用SetRoute的备份路由表功能备份为一个名为19216801的rbk文件。
等下回再回到这个网络环境时,使用SetRoute的恢复路由表功能恢复名为19216801的rbk文件进系统,实现快速添加路由表。
这个方法没有怎么测试,估计可行。软件可以Google之,也可这里下载。

详细访问:http://lakebaykal.blog.163.com/blog/static/184863117201242172855103/

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧