吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1875|回复: 28
收起左侧

[其他原创] 【VBS】修改IP地址~适用于其他工具无法修改IP时

[复制链接]
xiaomingtt 发表于 2024-8-26 14:24
本帖最后由 xiaomingtt 于 2024-8-27 10:03 编辑

当网卡的属性页面被禁用,netsh命令被禁用,更改适配器设置后切换的网络连接页面一片空白,测试了一下在论坛找的几款修改工具
【7.29更新】IP地址修改器_5.0.6.9 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
【开源】IP配置工具_2.6__一键切换IP、改Mac、计算机名 - 『编程语言区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
ip切换工具ipwhiz1.72绿色免费版 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
NetMagic网络地址快速切换工具 - 『原创发布区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
局域网IP扫描&一键更换本机IP小工具 - 『原创发布区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
[2024-3-15更新]本机IP一键设置 - 『原创发布区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
全部修改失败。
看下面两款软件截图,无法获取网卡信息,其他的有的可以获取网卡但均无法修改IP和掩码。
1.png 2.png

鉴于我们单位修改IP是刚需,于是写了段VBS代码,但正常修改IP失败后会通过修改注册表达到修改IP的目的(通过注册表修改需要重启电脑),代码自用的,需要的请自行修改。
[Visual Basic] 纯文本查看 复制代码
strComputer = "." 
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")

Do
    strIP = InputBox("请输入IP地址", "IP地址修改器", "192.168.118.111")
    If strIP = False Then Wscript.Quit 
Loop Until ValidateIP(strIP)

strDNS1 = "1.2.4.8"
strDNS2 = "1.1.1.1"

a = Split(strIP, ".")(2)
If a = "118" Or a = "119" Then
    strMask = "255.255.254.0"
    strGW = "192.168.119.254"
Else
    strMask = "255.255.255.0"
    strGW = Left(strIP, InStrRev(strIP, ".") - 1) & ".254"
End If 

Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=true")
For Each objItem in colItems 
    If (InStr(objItem.Description, "PCI") > 0) Then MAC = objItem.MACAddress
Next

Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where MACAddress='" & MAC & "'")
For Each objNetAdapter In colNetAdapters
    AdapterGUID = objNetAdapter.SettingID
    Exit For
Next

If ChangeNetworkConfig(objWMIService, strIP, strMask, strGW, strDNS1, strDNS2, MAC) Then 
    MsgBox "IP地址已更改。", 64, "IP地址修改器"
Else 
    RegBasePaths = Array("SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & AdapterGUID, _
                         "SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\" & AdapterGUID, _
                         "SYSTEM\ControlSet002\Services\Tcpip\Parameters\Interfaces\" & AdapterGUID)
    For Each RegBasePath in RegBasePaths
        Msg = Msg & vbCrLF & ChangeIPWithREG(RegBasePath, strIP, strMask, strGW, strDNS1, strDNS2)
    Next
    MsgBox Msg, 64, "IP地址修改器"
End If 

Function ValidateIP(strIP)
    Set re = New Regexp
    re.Pattern = "^192\.168\.(?:11[2-9]|12[0-7])\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$"
    re.IgnoreCase = True
    re.Global = True
    ValidateIP = re.Test(strIP)
    If Not ValidateIP Then MsgBox "地址非法", 16, "IP地址修改器"
End Function

Function ChangeNetworkConfig(objWMIService, strIP, strMask, strGW, strDNS1, strDNS2, MAC)
    Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where MACAddress='" & MAC & "'")
    strIPAddress = Array(strIP)
    strSubnetMask = Array(strMask)
    strGateway = Array(strGW)
    strGatewayMetric = Array(1)
    arrDNSServers = Array(strDNS1, strDNS2)
    For Each objNetAdapter In colNetAdapters
        errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
        errGateways = objNetAdapter.SetGateways(strGateway, strGatewayMetric)
        errDNS = objNetAdapter.SetDNSServerSearchOrder(arrDNSServers)
        If errEnable = 0 And errGateways = 0 Then
            ChangeNetworkConfig = True
            Exit Function
        End If
    Next
    ChangeNetworkConfig = False
End Function

Function ChangeIPWithREG(sPath, IPAddress, SubnetMask, Gateway, DNS1, DNS2)
    hKey = &H80000002
    Set objWMIService = GetObject("winmgmts:\\.\root\default:StdRegProv")
    v1 = objWMIService.SetMultiStringValue(hKey, sPath, "IPAddress", Array(IPAddress))
    v2 = objWMIService.SetMultiStringValue(hKey, sPath, "SubnetMask", Array(SubnetMask))
    v3 = objWMIService.SetMultiStringValue(hKey, sPath, "DefaultGateway", Array(Gateway))
    v4 = objWMIService.SetStringValue(hKey, sPath, "NameServer", DNS1 & "," & DNS2)
    If v1 = 0 And v2 = 0 And v3 = 0 And v4 = 0 Then 
        ChangeIPWithREG = "IP设置成功,重启电脑后生效。"
    Else
        ChangeIPWithREG = "IP配置设置失败。"
    End If
End Function

免费评分

参与人数 5吾爱币 +9 热心值 +5 收起 理由
Gengara + 1 + 1 鼓励转贴优秀软件安全工具和文档!
mmpooe + 1 用心讨论,共获提升!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
szluyang + 1 热心回复!
bcmgzht + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

j2017 发表于 2024-8-27 08:51


' 定义默认的计算机名称
strComputer = "."
' 通过WMI连接到本地计算机的CIMV2命名空间
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
' 循环直到用户输入有效的IP地址
Do
    ' 弹出输入框让用户输入IP地址
    strIP = InputBox("请输入IP地址", "IP地址修改器", "192.168.118.111")
    ' 如果用户点击取消,则退出脚本
    If strIP = False Then Wscript.Quit 
Loop Until ValidateIP(strIP)
' 定义默认的DNS服务器地址
strDNS1 = "1.2.4.8"
strDNS2 = "1.1.1.1"
' 提取输入IP地址的第三段,用于判断子网掩码和默认网关
a = Split(strIP, ".")(2)
' 根据第三段地址设置子网掩码和默认网关
If a = "118" Or a = "119" Then
    strMask = "255.255.254.0"
    strGW = "192.168.119.254"
Else
    strMask = "255.255.255.0"
    ' 构建默认网关地址
    strGW = Left(strIP, InStrRev(strIP, ".") - 1) & ".254"
End If
' 查询启用的网络适配器配置
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=true")
' 遍历所有启用的网络适配器
For Each objItem in colItems 
    ' 查找包含"PCI"描述的网络适配器并记录其MAC地址
    If (InStr(objItem.Description, "PCI") > 0) Then MAC = objItem.MACAddress
Next
' 查询具有特定MAC地址的网络适配器配置
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where MACAddress='" & MAC & "'")
' 遍历查询结果,获取网络适配器的设置ID
For Each objNetAdapter In colNetAdapters
    AdapterGUID = objNetAdapter.SettingID
    ' 找到适配器后退出循环
    Exit For
Next
' 尝试更改网络配置
If ChangeNetworkConfig(objWMIService, strIP, strMask, strGW, strDNS1, strDNS2, MAC) Then
    ' 如果成功,则弹出消息框通知用户
    MsgBox "IP地址已更改。", 64, "IP地址修改器"
Else
    ' 如果失败,则尝试通过注册表更改配置
    RegBasePaths = Array("SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & AdapterGUID, _
                         "SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\" & AdapterGUID, _
                         "SYSTEM\ControlSet002\Services\Tcpip\Parameters\Interfaces\" & AdapterGUID)
    ' 遍历注册表路径并尝试更改配置
    For Each RegBasePath in RegBasePaths
        Msg = Msg & vbCrLF & ChangeIPWithREG(RegBasePath, strIP, strMask, strGW, strDNS1, strDNS2)
    Next
    ' 弹出消息框显示结果
    MsgBox Msg, 64, "IP地址修改器"
End If
' 验证IP地址是否合法的函数
Function ValidateIP(strIP)
    ' 创建正则表达式对象
    Set re = New Regexp
    ' 设置正则表达式模式
    re.Pattern = "^192\.168\.(?:11[2-9]|12[0-7])\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$"
    re.IgnoreCase = True
    re.Global = True
    ' 测试输入的IP地址是否匹配
    ValidateIP = re.Test(strIP)
    ' 如果不匹配,则弹出错误消息
    If Not ValidateIP Then MsgBox "地址非法", 16, "IP地址修改器"
End Function
' 更改网络配置的函数
Function ChangeNetworkConfig(objWMIService, strIP, strMask, strGW, strDNS1, strDNS2, MAC)
    ' 查询具有特定MAC地址的网络适配器配置
    Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where MACAddress='" & MAC & "'")
    ' 定义IP地址、子网掩码、默认网关和DNS服务器数组
    str

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
grrr_zhao + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| xiaomingtt 发表于 2024-8-27 08:48

对正常环境肯定没失效,但对我们特殊环境是没用的,看我的截图,网卡一个也没识别出来,就没办法修改了.
oks 发表于 2024-8-26 14:27
ibocai 发表于 2024-8-26 14:49
来个大佬解答一下,这个好不好用?目前还真没找到合适的好用的
xin1you1di1 发表于 2024-8-26 15:14
支持一下,还是这款软件好用
btqedu 发表于 2024-8-26 15:15
还不错,下载支持一下
ppquartz 发表于 2024-8-26 15:40
楼主 软件在哪里下载呀
rs0128 发表于 2024-8-26 16:42
我也经常在内网和外网中经常切换,急需一个改IP的软件。
zhangfangyu 发表于 2024-8-26 16:45
支持,我们公司电脑也是,经常打不开网络修改界面
sadffg 发表于 2024-8-26 17:39
感谢分享!!!
style123 发表于 2024-8-26 19:19
蹲个现成的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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