找回密码
 加入
搜索
查看: 14384|回复: 15

[原创] IP设置工具(支持多网卡,IPX协议修改。)

 火.. [复制链接]
发表于 2010-3-22 02:08:46 | 显示全部楼层 |阅读模式
本帖最后由 viplight 于 2010-3-28 09:31 编辑

修改方式为注册表修改,防止多数软件修改IP后会注销的问题不过修改后要重启机器方能生效2010.03.23更新
1.修复内部网络号设置问题
2.增加IP的判断
3.修正了没有网卡时GUI无法显示2010.03.22 更新
1.本次修正了前版本不出现的241变量声明错误的问题(我想可能是我获取网卡ID时候有所问题(*^__^*) 嘻嘻)

2.修正了当网卡为自动不能转为固定的现象(前面那个没有想得那么周全)==============================================================================
2010.03.22 发布
自2010年03月14日开始研究本程序经过了这么多天终于完成了
希望大家帮忙测试,有什么BUG提出,(我是新手在提出BUG的同时也麻烦你提提你的宝贵意见)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-3-22 03:32:37 | 显示全部楼层
运行出错   241 变量没在开始声明
发表于 2010-3-22 08:49:20 | 显示全部楼层
同上                  
 楼主| 发表于 2010-3-22 11:42:33 | 显示全部楼层
  不会吧  ,你们用的是XP系统吗?
能截图给我看看吗?郁闷起的啊
发表于 2010-3-22 14:20:23 | 显示全部楼层
先支持一下 一会试试
发表于 2010-3-22 14:54:33 | 显示全部楼层
本帖最后由 mxkor 于 2010-3-22 15:07 编辑

首先感谢楼主的分享 顺路附上测试结论+图
1#程序在win7(32bit)下无法执行


2#windowsXP下可以执行,但结果好象有点问题
(1)若原来是用自动IP的,不会转为固定IP模式
     能设网关、DNS,但设不了掩码与IP
(2)INI中设定:机名前缀=PC,1号IP=M,程序中设定本机编号为N
若N=1,机名改成PC1,机IP改成.M正确
若N >1,机名改成PCN,机IP改成.N而非M+N-1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-3-22 15:09:20 | 显示全部楼层
另外,在点确定前,进行一下配置,
有一定机率会修正2#(2)错误 @.@

另问2个问题
1#是不是用netsh做的设置?
2#如何读取网卡数和网卡名?
 楼主| 发表于 2010-3-22 20:57:26 | 显示全部楼层
本帖最后由 viplight 于 2010-3-22 21:16 编辑

回复 6# mxkor


    我这程序是在XP环境下编写的至于其他版本的系统我也没有测试过
我对INI的算法是这样的,当设置了1号IP不为空和0时候将设置为指定的IP (一般网吧的路由IP也就是网关都是192.168.0.1等方便自动更改)
其他的当N>1时,且没有设置IP偏移的话就回事本机编号



语言表达不好大概就是这样((*^__^*) 嘻嘻)
 楼主| 发表于 2010-3-22 21:11:13 | 显示全部楼层
回复 7# mxkor


    我来回答你的问题,,,
1: 我不是用NETSH  做的IP修改(某些软件发现IP变化就会注销,而用这个命令修改的话就会,我用的是注册表)
2:下面这个函数获取到的网卡信息
Func _InetIsOffline()
                Return DllCall("url.dll","bool","InetIsOffline","DWORD",0)
EndFunc

;======================================================
;
; 函数名称:        _NetworkAdapterInfo()
; 详细信息:        获得网卡信息
; 返回值说明:
; 以二维数组方式返回.例如 $info=_NetworkAdapterInfo()
; $info[0][0]=网卡数量
; $info[1][0]第一块网卡的标志1
; $info[2][0]第二块网卡的标志2
; $info[1][1]第一块网卡的网卡名称
; $info[2][1]第二块网卡的网卡名称
; $info[1][2]第一块网卡的默认网关
; $info[1][3]第一块网卡的DNS主机名称(本机名称)
; $info[1][4]第一块网卡的IP地址
; $info[1][5]第一块网卡的主DNS
; $info[1][6]第一块网卡的次DNS
; $info[1][7]第一块网卡的子网掩码
; $info[1][8]第一块网卡的MAC地址
; $info[1][9]第一块网卡的连接名称
; 注意,此UDF不会获取已经禁用的网卡。
; 如果有需要,请删除' WHERE IPEnabled != 0'和' WHERE NetConnectionStatus >0'
; 作者:            thesnow(rundll32@126.com)
;
;======================================================
Func _NetworkAdapterInfo()
        Local $colItems = ""
        Local $objWMIService
        Local $NetworkAdapterID = 0
        Local $NetworkAdapterName = ""
        Local $NetworkAdapterGateway = ""
        Local $NetworkAdapterHostName = ""
        Local $NetworkAdapterIPaddress = ""
        Local $NetworkAdapterDNS1 = ""
        Local $NetworkAdapterDNS2 = ""
        Local $NetworkAdapterSubnet = ""
        Local $NetworkAdapterMAC = ""
        Local $NetworkAdapterNetConnectionID = ""
        Local $NetworkAdapterInfo[10][10] ;最高10块网卡.
        $NetworkAdapterInfo[0][0] = 0
        $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
        $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled != 0", "WQL", 0x10 + 0x20)
        $colItem2 = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus >0', "WQL", 0x10 + 0x20)
        If IsObj($colItems) Then
                For $objItem In $colItems
                        $NetworkAdapterName = $objItem.Description
                        $NetworkAdapterGateway = $objItem.DefaultIPGateway(0)
                        $NetworkAdapterHostName = $objItem.DNSHostName
                        $NetworkAdapterIPaddress = $objItem.IPAddress(0)
                        $NetworkAdapterDNS1 = $objItem.DNSServerSearchOrder(0)
                        $NetworkAdapterDNS2 = $objItem.DNSServerSearchOrder(1)
                        $NetworkAdapterSubnet = $objItem.IPSubnet(0)
                        $NetworkAdapterMAC = $objItem.MACAddress
                        $NetworkAdapterID += 1
                        $NetworkAdapterInfo[0][0] = $NetworkAdapterID
                        $NetworkAdapterInfo[$NetworkAdapterID][0] = $NetworkAdapterID
                        $NetworkAdapterInfo[$NetworkAdapterID][1] = $NetworkAdapterName
                        $NetworkAdapterInfo[$NetworkAdapterID][2] = $NetworkAdapterGateway
                        $NetworkAdapterInfo[$NetworkAdapterID][3] = $NetworkAdapterHostName
                        $NetworkAdapterInfo[$NetworkAdapterID][4] = $NetworkAdapterIPaddress
                        $NetworkAdapterInfo[$NetworkAdapterID][5] = $NetworkAdapterDNS1
                        $NetworkAdapterInfo[$NetworkAdapterID][6] = $NetworkAdapterDNS2
                        $NetworkAdapterInfo[$NetworkAdapterID][7] = $NetworkAdapterSubnet
                        $NetworkAdapterInfo[$NetworkAdapterID][8] = $NetworkAdapterMAC
                Next
        Else
                Return $NetworkAdapterInfo
        EndIf

        If IsObj($colItem2) Then
                $NetworkAdapterID = 0
                For $objItem2s In $colItem2
                        $NetworkAdapterNetConnectionID = $objItem2s.NetConnectionID
                        $NetworkAdapterID += 1
                        $NetworkAdapterInfo[$NetworkAdapterID][9] = $NetworkAdapterNetConnectionID
                Next
                Return $NetworkAdapterInfo
        Else
                Return $NetworkAdapterInfo
        EndIf
EndFunc   ;==>_NetworkAdapterInfo
发表于 2010-3-28 15:21:32 | 显示全部楼层
最好能加上反恐序号啊
发表于 2010-3-29 13:52:11 | 显示全部楼层
学习一下先。。。。。。。。。。。。。。。
发表于 2010-12-17 15:57:59 | 显示全部楼层
学习学习
发表于 2011-3-29 14:51:50 | 显示全部楼层
支持~不错的东西
发表于 2012-5-24 15:44:29 | 显示全部楼层
看看不错的样子。
发表于 2013-10-9 10:38:15 | 显示全部楼层
mark
感谢楼主分享
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 21:43 , Processed in 0.085782 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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