problem mit runas

  • Hallo autoit.de Forum,

    ich habe mir gestern AutoIT heruntergeladen, weil ich auf der Arbeit eine Datei auf ca. 450 Rechner in ein bestimmtes Verzeichnis kopieren muss. Leider kann sich der normale User die Datei nicht einfach von einer Netzablage selbst kopieren und in das entspr. Verzeichnis einfügen, da er hierfür auf seinem PC Adminrechte benötigt.

    Also hab ich mir ne batch geschrieben die nen simplen copy befehl enhält (einfach: copy datei.bas C:\zielverzeichnis\) und möchte diese bat nun mithilfe einer mit autoit erstellten exe als administrator starten, damit das kopiert werden kann.

    mein autoit script schaut so aus:

    $sUserName=("Administrator")
    $sPassword=("gedoens")
    RunAs($sUserName, @ComputerName, $sPassword, 0, "H:\portal\copy.bat")

    Mein Problem ist, das ansich nicht das passiert was passieren soll. Startet man die exe öffnet sich zwar kurz ne Dosbox als ob er die bat datei startet, jedoch wird keine Datei kopiert und die dosbox geht schnell wieder zu. Nachdem man die exe gestartet hat, lassen sich interessanterweise aber gar keine anderen exe dateien mehr starten, auch der taskmanager lässt sich bspw. nicht mehr öffnen.

    Bei den Client PCs handelt es sich um Windows XP Rechner mit SP2.

    Vielleicht hat ja jemand ne Idee wo mein Fehler liegt.

  • Hi,

    probier mal:


    RunAs($sUserName, @ComputerName, $sPassword, 0, "H:\portal\copy.bat", "H.\portal") da ich vermute, dass Deine bas Datei dort liegt.

    gffs.

    RunAs($sUserName, @ComputerName, $sPassword, 4, "H:\portal\copy.bat") zielführend.


    ;-))

    Stefan

  • Moin Stefan,

    ja die bas liegt in H:\portal , leider ändert keiner deiner Vorschläge etwas am Problem :(

    Die Fehlermeldung, welche kommt, nachdem die AutoIT exe ausgeführt wurde, und man ein anderes Programm öffnen möchte lautet:

    Die Anwendung konnte nicht richtig initialisiert werden (0xc0000142). Klicken Sie auf "OK" um die Anwendung zu beenden.

    Dennoch danke für den Versuch ;)

    Gruß,

    Marco

  • Hi,


    habe Deine lokalen Administratoren mind. Leserecht auf H:\portal?

    Gffs. am PC lokal als Administrator anmelden und copy.bat von H:\portal händisch ausführen.


    ;-))

    Stefan

  • Jop, lese und schreibrechte auf H:\

    Naja nachdem das alles nich funktioniert hab ich bissel gegoogelt und wollte es mal auf diese Weise testen, hab alles lokal hin kopiert und wollte dann per:


    ;Variables
    $sUserName=("Administrator")
    $sUserName=("gedöns")
    ;Copy
    RunAs($sUserName, @ComputerName, $sPassword, 0,
    DirCopy( "C:\post\" & "\post", "C:\Programme\DX-Union\lib\Start\Post", 1))


    ... Da bekomme ich aber folgende Meldung: Line -1: Error: Error parsing function call.

    Wenn ich´s allerdings so mache:


    ;Variables
    $sUserName=("Administrator")
    $sUserName=("gedöns")
    ;Copy
    RunAs($sUserName, @ComputerName, $sPassword, 0)
    DirCopy( "C:\post\" & "\post", "C:\Programme\DX-Union\lib\Start\Post", 1)


    bekomme ich folgende Meldung: Line -1: Error: Incorrect number of parameters in function call.

    Das Problem ist halt, der Kopiervorgang ins Zielverzeichnis muss als Administrator erfolgen.

    Und ich mag mich nicht an 450 Rechnern lokal anmelden müssen, zumal die alle garnich im Haupsitz hier stehen.

  • Hi,


    das ist auch richtig, da RunAs noch einen 5.ten Parameter Filename erwartet und ausschliesslich für den Aufruf von externen Programmen gedacht ist (s. Hilfe).


    1) Mach ein Skript nur mit dem DirCopy:

    DirCopy( "C:\post\" & "\post", "C:\Programme\DX-Union\lib\Start\Post", 1)

    Überprüfe, o b Du wirklich "C:\post\" & "\post" benötigst, ansonsten kannst Du auch "C:\post\post" benutzen.
    und kompiliere es als z.Bsp. DX-Union-Copy.exe


    2) Kopiere die exe Datei in das C:\post Verzeichnis


    3) 2. tes Skript mit RunAs:

    RunAs($sUserName, @ComputerName, $sPassword, 4, "C:\post\DX-Union-Copy.exe")


    4) Führe dann das 2.te Skript aus.


    ;-))

    Stefan

  • Auch das führte wieder zum Problem aus dem ersten Post... naja liegt wohl an der ganzen Client Server Struktur hier. Hab´s nun so gelöst:

    [autoit]

    Run("net use x: \\127.0.0.1\C$ gedöns /USER:Administrator")
    Sleep(3000)
    FileCopy("H:\post\s99portal.bas", "X:\Programme\DX-Union\lib\Start\Post", 1)
    Sleep(3000)
    Run("net use x: /d")
    MsgBox( 0, "IE Autostart", "Der Kopiervorgang war erfolgreich, Laufwerk wurde ausgehängt." , 3000)

    [/autoit]
  • If Not IsAdmin() Then
    ; Bis Version 3.2.10.0
    ;~ RunAsSet("user", @LogonDomain, "pwd")
    ;~ Run(@ScriptFullPath, @ScriptDir, @SW_HIDE)
    ;~ RunAsSet()
    ; AB Version 3.2.12.0
    RunAs("user", @LogonDomain, "pwd", 0, @ScriptFullPath, @ScriptDir, @SW_HIDE)
    Exit
    EndIf

    If IsAdmin() Then
    MsgBox(0, "", "Admin-Rechte erkannt.",1)
    EndIf

    weitere befehle

    gruß gmmg