以下是API的实现方法 Public Function ChangeIP(IP As String, NM As String, GW As String, MDNS As String, SDNS As String) As String '返回值说明:返回一个设置的中文说明. Dim strComputer, objWMIService, colNetAdapters, strIPAddress, strSubnetMask Dim strGateway, strGatewaymetric, strDNS, objNetAdapter, errEnable, errGateways, errDNS strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") strIPAddress = Array(IP) 'ip地址 strSubnetMask = Array(NM) '子网掩码 strGateway = Array(GW) '网关 strDNS = Array(MDNS, SDNS) '主DNS各备DNS strGatewaymetric = Array(1)
For Each objNetAdapter In colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask) errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric) errDNS = objNetAdapter.SetDNSServerSearchOrder(strDNS) If errEnable = 0 And errGateways = 0 And errDNS = 0 Then ChangeIP = "设置成功" Else If errEnable = 0 Then ChangeIP = "IP地址和子网掩码设置成功, " Else ChangeIP = "IP地址或子网掩码设置失败, " End If If errGateways = 0 Then ChangeIP = ChangeIP & "默认网关设置成功, " Else ChangeIP = ChangeIP & "默认网关设置失败, " End If If errDNS = 0 Then ChangeIP = ChangeIP & "DNS设置成功" Else ChangeIP = ChangeIP & "DNS设置失败" End If End If Next
End Function
原理说明: 修改注册表. HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\ 下的 IPAddress=(IP地址) SubnetMask=(子网) DefaultGateway=(默认网关) EnableDHCP=0(关动态取得IP)
然后调用 DhcpNotifyConfigChange 使更改生效
|