RunAs und kopieren

  • Hallöchen,

    ich habe folgendes Problem: Ich habe ein Script:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>

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

    $copylnk = @ScriptDir & "\copylinktmp.bat"
    _FileCreate($copylnk)
    _FileWriteToLine($copylnk, 1, "copy P:\lala.txt c:\", 1)
    Sleep(1000)
    run($copylnk)
    Sleep(1000)
    Filedelete($copylnk)

    [/autoit]

    So, wenn ich das jetzt in eine .exe compiliere und ausführe, kopiert er die datei von a nach b.
    Alles paletti. Rufe ich das kompilierte Script nun mit Einem Anderen RunAs-Script auf,
    wird es zwar ausgeführt und auch die .bat erstellt, er führt die .bat aber nicht aus, sprich es
    wird nichts kopiert. Wie kann das sein?

    Einmal editiert, zuletzt von Scritch (26. November 2010 um 14:46)

  • Wieso erstellst du eine eine Batch und führst diese dann aus?
    Für doch die Copy-Befehle gleich per _RunDos aus oder noch besser nimm die kopierfunktionen die Autoit hat

  • Habe ich ebenfals beides ausprobiert. Funktioniert genauso wenig :whistling:
    Packe ich das in ein Script, führe es aus - wunderbar. Sobal ich es mit
    RunAs aufrufen möchte, funktioniert es nicht.

  • dann wird dem Benutzer der es ausführen soll wohl die Berechtigung fehlen oder was noch warscheinlicher ist er hat das benötigte Netzlaufwerk nicht als P: verbunden. Wenn du wie Schnitzel vorgeschlagen hat AutoIt-Funktionen verwendest, kannst du mit @error besser auf Fehler reagieren,

    mfg autoBert

  • Möglich, ist aber nicht der Fall. Der auszuführende Benutzer hat Adminrechte. Wenn ich (mit Adminrechten) das Script so ausführe funktioniert es ja. Wenn ich meine Anmeldedaten, die ich auch bei der Anmeldung in Windows benutze, im RunAs-Script verwende, funktioniert es nicht. Der einzige Unterschied ist, dass einmal der Zugriff direkt passiert und einmal indirekt über RunAs.
    Das Pendant von Autoit habe ich ja auch schon ausprobiert.

  • Mal die Hilfe zu Run durchgelesen? ;)

    Zitat von AutoIt Hilfe &gt; Funktionsreferenz &gt; Run

    Bemerkungen
    Pfade mit Leerzeichen müssen in Anführungszeichen gesetzt werden.

    [autoit]

    Run("""" & $copylnk & """")

    [/autoit]


    oder

    [autoit]

    Run('"' & $copylnk & '"')

    [/autoit]

    PS:
    Statt

    [autoit]

    Run
    Sleep

    [/autoit]


    besser

    [autoit]

    RunWait

    [/autoit]


    dann ist auch kein Sleep mehr notwendig!

  • Danke euch erstmal für eure Antworten! Habe in die Batchfile mal eine Pause eingebaut: Über RunAs sagt er mir:
    "Das System kann das angegebene Laufwerk nicht finden"
    Starte ich es wie gehabt händisch, dann passiert das, was passieren soll.
    Ich habs jetzt mal so gelöst:

    Spoiler anzeigen
    [autoit]

    Local $aufruf = "C:\Dokumente" & " " & "und" & " " & "Einstellungen\User\Desktop\copy_lnk.bat"
    For $u = 0 to Ubound($atmp) - 1
    For $w = 0 to Ubound($apw) - 1
    RunAs($atmp[$u], $domain, $apw[$w], 0, $aufruf)
    Next
    Next

    [/autoit]


    Benutzer und PW liegen halt im Array. Mir ist das schleierhaft...

  • Dein Problem ist vermutlich ein anderes,
    Du kannst Dich nicht in einer Windowsanmeldung mit verschiedenen Namen an ein Share anmelden.
    Soll heissen wenn User1 schon ein Netzlaufwerk mit Server1 gemappt hat, kann man nicht eine zweite Verbindung mit anderen Zugangsdaten nutzen.

    Was aber geht wenn \\server\share schon genutzt , bzw. der Server schon genutzt wird, -> \\IP-des-Servers\Share
    Ob es noch Verbindungen(auch solche Geistersessions) gibt kann man mit net use einsehen.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Naja, das geschieht ja nicht nur beim Zugriff auf ein Netzlaufwerk, sondern auch wenn die auszuführende Datei lokal auf dem Desktop liegt.
    Könnte ich denn nicht das LW mit dem Benutzer der RunAs ausführt neu mounten? Würde das nicht was bringen?
    Bzw. erst aktuellen Benutzer LW unmounten lassen und dann neu mounten?

  • es müssen dann allle Verbindungen zu dem Server gekappt werden oder man nutzt \\IP\Share anstelle von \\Hostname\share
    das klappt dann bekloppterweise. :)

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o