Några framsteg? :)
Olika DNSer vid olika nät
29 svar · 1 343 visningar · startad av Peeer · sida 2 av 2
Frågan, av Peeer
Hej! Finns det något smidigt sätt att göra så man använder sig av en viss uppsättning DNS-servrar när man är ansluten till ett trådlöst nätverk och en annan uppsättning (gärna via dhcp) när man är ansluten till ett annat trådlöst nätverk? Operativsystemet är XP Pro.
Läs frågan i sin helhet →Jag ber än en gång om ursäkt, jag ska lägga en reminder i kalenderna så jag kommer ihåg detta imorgon. :)
Sådär, nu går den på ip.
Function GetIP()
GetIP=false
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select IPAddress from Win32_NetworkAdapterConfiguration")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
tempVal = IPConfig.IPAddress(i)
Next
End If
Next
GetIP=tempVal
End Function
nIp=CInt(split(GetIP,".")(0))
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery("SELECT " & _
"* FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True")
if nIp = 130 Then ' Universitet, med deras dnser.
arrDNS=Array("123.123.123.123","123.123.123.123")
else ' Annanstans, openDNS
arrDNS=Array("111.111.111.111","222.222.222.222")
end if
For Each objNicConfig In colNicConfigs
intServers = objNicConfig.SetDNSServerSearchOrder _
(arrDNS)
If intServers = 0 Then
msgbox("Dnser satta")
Else
msgbox("Ej Satta")
End If
Next
Spännande :)
Tänk bara på att om du byter till Vista bör du kryssa av IPv6 annars blir det galet.
Jag gjorde en revisist på den så att den plockar dnser från dhcp på universitetet istället för att ha dem hårdkodade. Jag snyggade även up koden lite.
Option Explicit
Dim strComputer, nIp, arrDNS, intServers, objWMIService, tempVal, IPConfigSet, IPConfig, objNicConfig, colNicConfigs, i
strComputer="."
Function GetIP()
GetIP=false
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select IPAddress from Win32_NetworkAdapterConfiguration")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
tempVal = IPConfig.IPAddress(i)
Next
End If
Next
GetIP=tempVal
End Function
nIp=CInt(split(GetIP,".")(0))
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery("SELECT " & _
"* FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True")
For Each objNicConfig In colNicConfigs
if nIp = 130 Then ' Universitet, med DHCP-dnser.
arrDNS=NULL
objNicConfig.EnableDHCP()
else ' Annanstans, openDNS
arrDNS=Array("111.111.111.111","222.222.222.222")
end if
intServers = objNicConfig.SetDNSServerSearchOrder _
(arrDNS)
If intServers = 0 Then
msgbox("Dnser satta")
Else
msgbox("Ej Satta")
End If
Next
Mja, eftersom jag har flera nätverkskort blir det lite fel. GetIP får värdet 0.0.0.0 (troligtvis från mitt trådade nätverkskort) vilket gör att jag får de statiska adresserna jämt. Förslag på hur man gör så den bara läser av det trådlösa?
Option Explicit
Dim strComputer, nIp, strMAC, MAC, strIPMac, ip, arrDNS, intServers, MACConfigSet, objWMIService, tempVal, IPConfigSet, IPConfig, objNicConfig, colNicConfigs, i
strComputer="."
Function GetIPMac()
GetIPMac=false
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set MACConfigSet = objWMIService.ExecQuery _
("Select MACAddress from Win32_NetworkAdapter WHERE Name='Intel(R) PRO/Wireless 3945ABG Network Connection'")
For Each MAC in MACConfigSet
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration WHERE MACAddress='"&MAC.MACAddress&"'")
Next
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
tempVal = IPConfig.IPAddress(i)&"|"&IPConfig.MACAddress
Next
End If
Next
GetIPMac=tempVal
End Function
strIPMac=GetIPMac
ip=split(strIPMac,"|")(0)
strMAC=split(strIPMac,"|")(1)
nIp=CInt(split(ip,".")(0))
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery("SELECT " & _
"* FROM Win32_NetworkAdapterConfiguration WHERE MACAddress='"&strMAC&"'")
For Each objNicConfig In colNicConfigs
if nIp = 130 Then ' Universitet, med DHCP-dnser.
arrDNS=NULL
objNicConfig.EnableDHCP()
else ' Annanstans, openDNS
arrDNS=Array("111.111.111.111","222.222.222.222")
end if
intServers = objNicConfig.SetDNSServerSearchOrder _
(arrDNS)
If intServers = 0 Then
msgbox("Dnser satta")
Else
msgbox("Ej Satta")
End If
Next
Det fungerar utmärkt, stort tack! :)
Får fortfarande upp "Dnser satta" följt av "Ej satta", men det kan jag leva med.
Hmm, det är riktigt spännande iom att den selectar på mac nu. Men det innebär ju att den inte sätter på nummer två.. :D
Det skulle kunna bero på att du har två trådlösa med samma namn, fast det låter ju ganska otroligt.

