webForumDet fria alternativet

Olika DNSer vid olika nät

Windows

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 →
Medlem sedan mars 20025 907 inlägg
#21

Några framsteg? :)

Medlem sedan juni 20014 421 inlägg
#22

Jag ber än en gång om ursäkt, jag ska lägga en reminder i kalenderna så jag kommer ihåg detta imorgon. :)

Medlem sedan juni 20014 421 inlägg
#23

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
Medlem sedan dec. 20014 239 inlägg
#24

Spännande :)
Tänk bara på att om du byter till Vista bör du kryssa av IPv6 annars blir det galet.

Medlem sedan juni 20014 421 inlägg
#25

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
Medlem sedan mars 20025 907 inlägg
#26

Det ser riktigt trevligt ut, ska prova imorgon! Jag återkommer.

:)

Medlem sedan mars 20025 907 inlägg
#27

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?

Medlem sedan juni 20014 421 inlägg
#28
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
Medlem sedan mars 20025 907 inlägg
#29

Det fungerar utmärkt, stort tack! :)

Får fortfarande upp "Dnser satta" följt av "Ej satta", men det kan jag leva med.

Medlem sedan juni 20014 421 inlägg
#30

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.

279 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
152 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)