RunWait/RunAsWait - Setzen einer IP-Route geht nicht (Windows 7)

  • Hi,

    ich versuche mit AutoIt (unter Windows 7) eine statische Route zu setzen, jedoch wird diese nicht angelegt.

    Ursprünglich mit "RunWait" umgesetzt:

    Code
    RunWait(@ComSpec & " /c route add -p 192.168.1.0 mask 255.255.255.0 192.168.2.200", "", @SW_HIDE)

    Der Route-Befehl in einer DOS-Box ohne Admin-Rechte eingegeben, bringt den entscheidenden Hinweis:
    "Der angeforderte Vorgang erfordert erhöhte Rechte."

    Also dann die Umsetzung mit "RunAsWait":

    Code
    RunAsWait("Administrator", @ComputerName, "passwd", 0, @ComSpec & " /c route add -p 192.168.1.0 mask 255.255.255.0 192.168.2.200", "", @SW_HIDE)

    Aber auch das setzt aus AutoIt heraus nicht die entsprechende Route; der Route-Befehl in einer DOS-Box mit Admin-Rechten setzt die Route.

    Ich sehe wahrscheinlich den Wald vor lauter Bäumen nicht und es fehlt nur eine Kleinigkeit, damit es läuft. :S Vieleicht kann einer von euch helfen?
    BTW: AutoIt-Version 3.3.4.0 und "#RequireAdmin" ist eingefügt.

    cu, eRKa

    PS: ach ja - 64Bit-Version von Win7

    Einmal editiert, zuletzt von eRKa (20. Februar 2010 um 15:41)

  • Hi also unter Vista habe ich das mal nachgestellt und getestet.
    Als normaler Benutzer war ich angemeldet und es kam OK zurück.

    Spoiler anzeigen
    [autoit]


    Dim $ausgabe
    Dim $pid
    #RequireAdmin
    ;set
    $pid = Run(@ComSpec & " /c route add -p 192.168.1.0 mask 255.255.255.0 192.168.2.200", @WindowsDir, @SW_HIDE,8)
    ;delete
    ;$pid = Run(@ComSpec & " /c route delete -p 192.168.1.0 mask 255.255.255.0 192.168.2.200", @WindowsDir, @SW_HIDE,8)

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

    sleep(100)
    MsgBox(0,"",_read())

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

    Func _read()
    Local $pid2
    $ausgabe = "Outread"&@CRLF
    While 1
    if ($pid <> 0) then
    $ausgabe &= StdOutRead($pid)
    EndIf
    If @error Then ExitLoop
    Sleep(50)
    WEnd
    $ausgabe &= "Route PRINT"&@CRLF
    ;Message
    Sleep(100)
    $pid2 = Run(@ComSpec & " /c route print 192.168.1.0", @WindowsDir, @SW_HIDE,8)
    While 1
    if ($pid2 <> 0) then
    $ausgabe &= StdOutRead($pid2)
    EndIf
    If @error Then ExitLoop
    Sleep(50)
    WEnd
    $ausgabe &= "ErrRead"&@CRLF

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

    return $ausgabe
    EndFunc

    [/autoit]

    Aber wie gesagt das war unter VISTA 32 Bit. vielleicht ist der Befehl unter Windows 7 ein anderer?
    Das glaube ich aber net.
    Teste es mal und berichte.

    MfG
    Der_Doc

  • Ok, dein Script setzt auch bei mir die Route (Win7 64Bit).

    Theoretisch sollte es in meinem Gesamt-Script also doch funktionieren.
    Jetzt muss ich noch mal in Ruhe checken, warum das bei mir im Gesamt-Script nicht laufen will.
    (Dauert was, weil Seewasser aus dem Aquarium und Computer vertragen sich nicht so gut :rolleyes: )

    Also doch was vonwegen "Wald vor lauter Bäumen..." ?(

    Wenn ich den Grund gefunden habe poste ich nochmal.

    Schon mal Danke. :thumbup:

  • So,
    nachdem ich nicht wirklich einen Fehler in meinem Gesamt-Script sehen konnte, hab ich den Teil mit Routen setzen, löschen, abfragen rausgekickt und neu geschrieben.
    Sieht mE jetzt zwar wieder analog aus, aber jetzt läuft's.

    Tendenziell vermute ich einfach mal, dass sich da irgendwo ein nicht dargestelltes Steuerzeichen eingeschlichen hat :wacko: , das dann beim Cut & Paste auch immer schön mitkopiert wurde.

    Aber nochmal Danke für deinen Test. :thumbup:

    cu, eRKa