Как очистить шлюз TCP/IP с помощью WMI в Vista / Server 2008?
Привет,
Сейчас я пишу это, я прочитал около 30 страниц в интернете и не нашел ничего приемлемого.
Я написал код с помощью WMI(Win32_NetworkAdapterConfigurationonfiguration) в VB.Net, который устанавливает и очищает шлюз / DNS для конкретного сетевого адаптера IPEnabled.
Этот код отлично работает на сервере Windows XP/2003, но в Vista / Server 2008 он все равно не может очистить шлюз.
Я попытался передать нулевой массив методу SetGatways, но ничего не получилось
пытался передать нулевой массив для GatewayCostMetrics, безуспешно.
Я тоже пытался wbemtest.exe чтобы выполнить метод непосредственно, но это тоже не помогает.
Я не знаю, Ошибка это или нет, но каждая статья, которую я читал в Службе поддержки microsoft, заканчивалась безрезультатно.
Здесь я напишу 2 блока кода VBScript,
первый запишет шлюз / DNS на предпочтительный сетевой адаптер IPEnabled, а второй попытается очистить их.
Я ценю любую помощь в этом вопросе.
Шлюз/ДНС установить код:
strComputer = "." arrDefaultGateways = Array("192.168.0.1") arrGatewayCostMetrics = Array(1) ' uint16 arrDNSServers = Array("192.168.0.1") Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colNicConfigs = objWMIService.ExecQuery _ ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") For Each objNicConfig In colNicConfigs If objNicConfig.IPEnabled Then strText = objNicConfig.Description & vbNewLine _ & objNicConfig.MACAddress & vbNewLine & vbNewLine _ & "Do you want to change Gateway/DNS of this NIC?" strTitle = "Question..." intMsg = MsgBox(strText,vbYesNo,strTitle) Select Case intMsg Case 6 'yes intGWReturn = objNicConfig.SetGateways(arrDefaultGateways, _ arrGatewayCostMetrics) intDNSReturn = objNicConfig.SetDNSServerSearchOrder(arrDNSServers) If (intGWReturn + intDNSReturn = 0) Then WScript.Echo "Successful" Else WScript.Echo "Gateway Return code= " & intGWReturn _ & vbNewLine & "DNS Return code= " & intDNSReturn End If Exit For Case 7 'no End Select End If Next
Шлюз / DNS Clear code:
strComputer = "." arrDefaultGateways = Array() ' < Empty Array arrGatewayCostMetrics = Array() ' < Empty Array arrDNSServers = Array() ' < Empty Array Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colNicConfigs = objWMIService.ExecQuery _ ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") For Each objNicConfig In colNicConfigs If objNicConfig.IPEnabled Then strText = objNicConfig.Description & vbNewLine _ & objNicConfig.MACAddress & vbNewLine & vbNewLine _ & "Do you want to change Gateway/DNS of this NIC?" strTitle = "Question..." intMsg = MsgBox(strText,vbYesNo,strTitle) Select Case intMsg Case 6 'yes intGWReturn = objNicConfig.SetGateways(arrDefaultGateways, _ arrGatewayCostMetrics) intDNSReturn = objNicConfig.SetDNSServerSearchOrder(arrDNSServers) If (intGWReturn + intDNSReturn = 0) Then WScript.Echo "Successful" Else WScript.Echo "Gateway Return code= " & intGWReturn _ & vbNewLine & "DNS Return code= " & intDNSReturn End If Exit For Case 7 'no End Select End If Next