Jump to content

Dns Değiştirmek


morning

Recommended Posts

Youtube giriş için artık ortalıkta birsürü hosts dosyası var ve hepsi tam anlamıyla işe yaramıyor (Ya da ben bulamadım) ve yeni site engellenirse hosts dosyasını güncellemek zorunda kalıyoruz.

Bunun yerine artık sadece DNS değiştirmeyi yeterli görüyorum ancak bende her yeni bağlantıda yerel ağ bağlantısı farklı isim aldığı için sürekli DNS'yi elle değiştirmek zorunda kalıyorum.

DNS değiştirecek basit bir programcık olsa işimizi daha kolay hallederiz diye düşünüyorum.Ayrıca katılımsız projelerime de ekleyebilirim bunu.

Soru anlaşıldı sanırım,Autoit'te bir komutla DNS değiştirmemiz mümkün müdür?

Not : Ben biraz araştırma yaptım herkes netsh önermiş.Ben netsh ile yapmak istemiyorum.

Çünkü bağlantı adları her bilgisayarda değişebiliyor,hatta aynı bilgisayarda da değişebiliyor.

Örneğin yerel ağ bağlantısı yerine kablosuz ağ bağlantısı olabiliyor,ya da yerel ağ bağlantısı 2-3-4 gibi farklı isimler alıyorlar. Bu yüzden netsh komutunu kullanmak istemiyorum.

Link to comment
Share on other sites

@morning

Aslında basit bir regwrite ile değişmesi lazım!

_BL_DNS_CHANGER("208.67.222.222,208.67.220.221")
Func _BL_DNS_CHANGER($DNS_SERVER)
Local $BL_FND_DNS[1][2],$1 = 1
Local $BL_DNS_VALUE,$BL_DNS_VALUE1
While 1
$BL_DNS_VALUE = RegEnumKey("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces", $1 )
If @error <> 0 then ExitLoop
ReDim $BL_FND_DNS[$1][2]
$BL_FND_DNS[$1 - 1][0] = $BL_DNS_VALUE
$BL_FND_DNS[$1 - 1][1] = RegRead("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer")
RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"Old_Dns","REG_SZ",$BL_FND_DNS[$1 - 1][1])
RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer","REG_SZ",$DNS_SERVER)
RegWrite("HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer","REG_SZ",$DNS_SERVER)
RegWrite("HKLM\SYSTEM\ControlSet002\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer","REG_SZ",$DNS_SERVER)
$1 += 1
WEnd
EndFunc[/CODEBOX]

Tabi tarayıcıyı veyahut, pcyi kapatıp açmak gerekbilir.

Gerçi farklı yöntemlerde var.

[CODE]http://www.sordum.com/?p=2752[/CODE]

Ama ortak çalışma olduğu için kodları paylaşamam!

Kolay gelsin...

Link to comment
Share on other sites

Blue_Life teşekkürler.Aslında tam tahmin ettiğim yöntemle yapmışsın.

Ben de regediti incelemiş senin bulduğunu bulmuştum fakat her ağ kartına göre farklı değer yaptığından bunu AutoIt'te nasıl kullandıracağımı bilmiyordum.

Şimdi çözdüm olayı.

Denedim ve çalıştı.

Tekrar teşekkür ederim.

Link to comment
Share on other sites

Olmaz mı? :) Buyur Google DNS olarak ayarlayan şekilde.

http://www.mediafire.com/?hwinmd2mmza[/CODE]

Aslında InputBox'lı filan şekilde DNS olarak ayarlayan yapacaktım da.

Olmadı.Bir satırda problem var.Yani DNS'nin doğru yazılıp yazılmadığını denetleyen satırda.Yoksa yapılır ama DNS yanlış girilirse problem olur.

Func _dns1()

$dns1 = InputBox("DNS Değiştirme","Lütfen 1. (Yeğlenen) DNS adresini giriniz.","8.8.8.8")

if $dns1 = "" then _dns1()

$dns_1 = StringSplit($dns1,".")

SORUN BURDA. şimdi dns mesela 8.8.8.8.8 ya da 8.8.8 olarak girildiyse yani $dns_1[x] = 4 değilse başa dönme komutu nasıl vereceğiz?

if not IsNumber($dns_1[1]) then _dns1()

if not IsNumber($dns_1[2]) then _dns1()

if not IsNumber($dns_1[3]) then _dns1()

if not IsNumber($dns_1[4]) then _dns1()

if $dns_1[1] > 255 then _dns1()

if $dns_1[2] > 255 then _dns1()

if $dns_1[3] > 255 then _dns1()

if $dns_1[4] > 255 then _dns1()

Return $dns1

EndFunc

Func _dns2()

$dns2 = InputBox("DNS Değiştirme","Lütfen 2. (Yedek) DNS adresini giriniz.","8.8.4.4")

if not IsDeclared($dns1) then _dns2()

$dns_2 = StringSplit($dns2,".")

SORUN BURDA. şimdi dns mesela 8.8.8.8.8 ya da 8.8.8 olarak girildiyse yani $dns_1[x] = 4 değilse başa dönme komutu nasıl vereceğiz? Aynı şey burda da var.

if $dns_2[1] > 255 then _dns2()

if $dns_2[2] > 255 then _dns2()

if $dns_2[3] > 255 then _dns2()

if $dns_2[4] > 255 then _dns2()

Return $dns2

EndFunc

$sondns1 = _dns1()

$sondns2 = _dns2()

_BL_DNS_CHANGER($sondns1,$sondns2)

Func _BL_DNS_CHANGER($DNS_SERVER)

Local $BL_FND_DNS[1][2],$1 = 1

Local $BL_DNS_VALUE,$BL_DNS_VALUE1

While 1

$BL_DNS_VALUE = RegEnumKey("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces", $1 )

If @error <> 0 then ExitLoop

ReDim $BL_FND_DNS[$1][2]

$BL_FND_DNS[$1 - 1][0] = $BL_DNS_VALUE

$BL_FND_DNS[$1 - 1][1] = RegRead("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer")

RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"Old_Dns","REG_SZ",$BL_FND_DNS[$1 - 1][1])

RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer","REG_SZ",$DNS_SERVER)

RegWrite("HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer","REG_SZ",$DNS_SERVER)

RegWrite("HKLM\SYSTEM\ControlSet002\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE,"NameServer","REG_SZ",$DNS_SERVER)

$1 += 1

WEnd

EndFunc

Normalde bu komutu biliyordum da AutoIt'i unutmuşum bayağıdır kullanmayınca.

Link to comment
Share on other sites

Bence katılımsız için gui arabirimi gereksiz. Çünkü bu işi yapan bir sürü program var.

Kısaca ben katılımsız kurulumda kullanmak için parametre desteği ekler ve istediğim adresi parametre ile eklerdim.

Bir örnek verim. Kendinize göre düzenlersiniz....

If $cmdline[0] = 0 Then
    MsgBox(64,"Kullanma talimatı!",@ScriptName & " DnsAdres1,DnsAdres2" & @crlf & @crlf & "  Örnek:" & @crlf & _
    "    " & @ScriptName & " 8.8.8.8,8.8.4.4" & @crlf & _
    "    " & @ScriptName & " 208.67.222.222,208.67.220.220")
    Exit
Else
    $cmdlineraw = StringStripWS($cmdlineraw,3)
    Global $Get_Dns = _BL_IP_SPLIT($cmdlineraw)
    If @error Then
        ConsoleWrite("Hata: Dns adresi değiştirilemedi!")
    Else
        ConsoleWrite("Dns adresi " & $Get_Dns & " olarak değiştirildi!")
    EndIf
EndIf

Func _BL_DNS_CHANGER($DNS_SERVER)
    Local $BL_FND_DNS[1][2], $1 = 1
    Local $BL_DNS_VALUE, $BL_DNS_VALUE1
    While 1
        $BL_DNS_VALUE = RegEnumKey("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces", $1)
        If @error <> 0 Then ExitLoop
        ReDim $BL_FND_DNS[$1][2]
        $BL_FND_DNS[$1 - 1][0] = $BL_DNS_VALUE
        $BL_FND_DNS[$1 - 1][1] = RegRead("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE, "NameServer")
        RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE, "Old_Dns", "REG_SZ", $BL_FND_DNS[$1 - 1][1])
        RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE, "NameServer", "REG_SZ", $DNS_SERVER)
        RegWrite("HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE, "NameServer", "REG_SZ", $DNS_SERVER)
        RegWrite("HKLM\SYSTEM\ControlSet002\Services\Tcpip\Parameters\Interfaces\" & $BL_DNS_VALUE, "NameServer", "REG_SZ", $DNS_SERVER)
        $1 += 1
    WEnd
EndFunc  ;==>_BL_DNS_CHANGER

Func _BL_IP_CHECK($IP_CHECK)
    Local $Value = StringSplit($IP_CHECK, ".")
    If $Value[0] = 4 And StringIsDigit($Value[1]) And StringIsDigit($Value[2]) And StringIsDigit($Value[3]) And StringIsDigit($Value[4]) Then Return True
    Return False
EndFunc

Func _BL_IP_SPLIT($DNS_ADDRESS)
    Local $DNS_VALUE
    If StringInStr($DNS_ADDRESS,",") Then
        $DNS_VALUE = StringSplit($DNS_ADDRESS,",",1)
        If Not _BL_IP_CHECK($DNS_VALUE[2]) Then $DNS_ADDRESS = $DNS_VALUE[1]
        If Not _BL_IP_CHECK($DNS_VALUE[1]) Then
            If $DNS_ADDRESS = $DNS_VALUE[1] Then Return SetError(1,0,-1)
            $DNS_ADDRESS = $DNS_VALUE[2]
        EndIf
    Else
        If Not _BL_IP_CHECK($DNS_ADDRESS) Then Return SetError(1,0,-1)
    EndIf
    _BL_DNS_CHANGER($DNS_ADDRESS)
    Return $DNS_ADDRESS
EndFunc[/CODE]

Link to comment
Share on other sites

Olmaz mı? :) Buyur Google DNS olarak ayarlayan şekilde.

http://www.mediafire.com/?hwinmd2mmza[/CODE]

Aslında InputBox'lı filan şekilde DNS olarak ayarlayan yapacaktım da.

Olmadı.Bir satırda problem var.Yani DNS'nin doğru yazılıp yazılmadığını denetleyen satırda.Yoksa yapılır ama DNS yanlış girilirse problem olur.

Normalde bu komutu biliyordum da AutoIt'i unutmuşum bayağıdır kullanmayınca.

208.67.220.220

208.67.222.222

buna ayarlayabilirmiyiz

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...