IP geändert (WMI Object) - kein Zugriff auf Internetseite

  • Hallo zusammen,
    ich habe ein Tool geschrieben, dass die WMI nutzt, um die IP-Konfiguration zu verändern. Nachdem ich mit dem Tool die IP-Änderung rückgängig gemacht habe ist der Zugriff auf eine Internetseite gesperrt. DNS-Auflösung dieser Seite funktioniert, aber ein Ping ist erfolglos (ohne Antwort). Das Netzwerk des Testsystems ist manuell konfiguriert innerhalb eines größeren Verbundes.Neustart hilft nicht. Hänge ich meinen eigenen Laptop an die Dose, habe ich das Problem bei gleicher IP-Konfiguration nicht. Mein Rechner scheint immun ?(
    Hat jemand eine Idee? Ich verwende folgenden Code:

    [autoit]

    $strComputer = "."
    $objWMIService = ObjGet( _
    "winmgmts:\\" & $strComputer & "\root\cimv2")
    $colNetAdapters = $objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration " _
    & "where IPEnabled=TRUE")
    $strIPAddress = _ArrayCreate($meineIP)
    $strSubnetMask = _ArrayCreate($meineSubnetMask)
    $strGateway = _ArrayCreate($IPgateway)
    $strGatewayMetric = _ArrayCreate(1)

    [/autoit][autoit][/autoit][autoit]

    For $objNetAdapter In $colNetAdapters
    $errEnable = $objNetAdapter.EnableStatic($strIPAddress, $strSubnetMask)
    $errGateways = $objNetAdapter.SetGateways($strGateway, $strGatewayMetric)
    Next

    [/autoit]


    Ich verwende die Funktion _GetNetworkadapterIPEnabled von BugFix um die richtige Konfiguration auszulesen, zu speichern und hiermit zu verwenden.
    Frage 1: Warum gibt es keinen Zugriff auf die Internetseite, die ich mit IE auslesen möchte?
    Frage 2: Was muss ich an dem Quelltext ändern, dass nur der IP-Enabled Adapter neu konfiguriert wird?
    Mir ist aufgefallen, dass diese Funktion alle Adapter neu konfiguriert (auch nicht verbundene WLAN).

    2 Mal editiert, zuletzt von Poloshirt (14. November 2009 um 21:15)

  • Nein, ich schreibe ein Tool für ein Studentenwohnheim. Hilft dir das? Das müsste aber in jedem Netzwerk funktionieren.

  • Hi,

    Dein Code Schnippsel ist für eine Fehleranalyse zu wenig.
    1) Gffs. liegt Dein Problem in der Funktion _ArrayCreate
    2) Bevor Du irgendetwas schreibst, lass Dir das Array anzeigen um die Werte zu überprüfen.
    3) Nach erfolgter Änderung kannst Du die Einstellungen auch über ein IPConfig /all überprüfen.

    Kann es sein das Dein DNS in dem gleichen Subnetz liegt? Das würde erklären warum evtl. die DNS Auflösung funktioniert, aber kein Routing wenn das GefaultGateway falsch eingetragen wird.

    ;-))
    Stefan

  • Zitat

    Nein, ich schreibe ein Tool für ein Studentenwohnheim. Hilft dir das? Das müsste aber in jedem Netzwerk funktionieren.


    IP Vergabe sollte natürlich funktionieren, aber die Erreichbarkeit der von dir gewünschten Internetseite ist damit nicht gewährleistet.
    Unter Umständen habt ihr in eurem Netz ein Proxy, den du zwischenschalten musst.

    - MfG OpaEd

  • Zitat

    Mir ist aufgefallen, dass diese Funktion alle Adapter neu konfiguriert (auch nicht verbundene WLAN).

    Ich bin jetzt nicht der Datenbankspezialist würde aber vermuten, daß "where IPEnabled=TRUE" ALLE Adapter auswählt. Diese werden dann auch alle mit der For/In Schleife abgearbeitet....

  • Man müsste in den Code die Auswahl der verwendeten Netzwerkkarte einbauen. Ein Beispiel ist die Funktion _GetNetworkAdapterIPEnabled() von Bugfix, hier wird ausschließlich die aktuell verwendete Netzwerkkarte ausgewählt.

    Spoiler anzeigen
    [autoit]

    ;****************************************************************************************
    ; Funktion _GetNetworkAdapterIPEnabled()
    ; BeschreibungErmittelt Netzwerkadapter mit konfigurierter IP
    ; Rückgabe Array Netzwerkadapter
    ; Array[n][0]Caption
    ; Array[n][1]IP-Adresse
    ; Array[n][2]Subnetzmaske
    ; Array[n][3]Standardgateway
    ; wird kein IPEnabled Adapter gefunden:
    ; Return -1 und @error = 1
    ; Erfordernisse#include <array.au3>
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;****************************************************************************************
    Func _GetNetworkAdapterIPEnabled()
    Dim $arAdapter[1], $var
    $arAdapter[0] = -1
    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $strComputer = "localhost"
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $IPConfigSet = $objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    For $IPConfig In $IPConfigSet
    For $i = 0 To UBound($IPConfig.IPAddress) - 1
    If $IPConfig.IPAddress($i) <> '0.0.0.0' Then
    $settings = $IPConfig.Caption & '|' & _
    $IPConfig.IPAddress($i) & '|' & _
    $IPConfig.IPSubnet(0) & '|' & _
    $IPConfig.DefaultIPGateway(0)
    If $arAdapter[0] = -1 Then
    $arAdapter[0] = $settings
    Else
    For $i = 0 To UBound($arAdapter) - 1
    If $arAdapter[$i] = $settings Then
    ExitLoop
    Else
    _ArrayAdd($arAdapter, $settings)
    EndIf
    Next
    EndIf
    EndIf
    Next
    Next
    If $arAdapter[0] = -1 Then
    SetError(1)
    Return -1
    Else
    Local $arOut[UBound($arAdapter)][4]
    For $i = 0 To UBound($arAdapter) - 1
    $var = StringSplit($arAdapter[$i], '|')
    $arOut[$i][0] = $var[1]
    $arOut[$i][1] = $var[2]
    $arOut[$i][2] = $var[3]
    $arOut[$i][3] = $var[4]
    Next
    EndIf
    Return $arOut
    EndFunc ;==>_GetNetworkAdapterIPEnabled

    [/autoit]


    Weiß jemand, wie man die Funktion von BugFix mit dem Code oben so abändert, dass nicht mehr ausgelesen sondern die ermittelte Netzwerkkarte neu konfiguriert wird?

    opaed: Also einen Proxy gibts nicht. Die Verbindung funktioniert seit Jahren ohne (hab selbst dort gewohnt)
    @ojo: Ja, der DNS-Server liegt im gleichen Subnetz, ist aber eingetragen. Was bedeutet das für mich?
    Die Funktion _arraycreate erzeugt laut array.au3 ein einfaches Array mit so vielen Einträgen wie Parameter angegeben sind. Die Erstellung funktioniert auch.
    Den Code gibts bei Microsoft (WMI Management von vbs nach autoit mit einem Tool übersetzt...)

  • Hab den Fehler gefunden, der dazu führte, dass bestimmte Seiten nicht erreichbar waren:
    Hatte die Subnetmaske fehlerhaft eingetippt :rolleyes:
    Hab das Problem, dass immer in alle Adapter eingetragen wurde gelöst, indem ich die IP-Adresse des Adapters überprüft habe, ob sie im Bereich meines Netzwerks liegt. So kann immer nur ein Adapter ausgewählt sein.
    Vielen Dank für eure Hilfe.