RunAs Problem

  • Hallo zusammen,
    ich habe ein etwas spezielles RunAs Problem.

    Ausgangslage
    Ich möchte als Benutzer mit AutoIt einen geplanter Task erstellen. Das klappt auch, allerdings nur, wenn der Benutzer lokaler Admin ist. Gut, das scheint von M$ so zu sein.
    Also habe ich ein zweites Script gemacht, welches mit

    [autoit]

    #RequireAdmin

    [/autoit]

    Administratoren Rechte beantragt.
    Danach wird der Benutzer, um welchen es geht, zu den lokalen Administratoren hinzugefügt. (Auch das klappt)

    Nun wird mit RunAsWait das Ursprüngliche Script aufgerufen, in der Hoffnung, dass es nun unter diesem Benutzer läuft. (Dies muss es, weil sonst der Benutzer diesen Task gar nicht sehen oder ausführen kann.

    Doch das Script bei RunAsWait wird immer als Administrator ausgeführt!

    Script1

    [autoit]

    #RequireAdmin
    Opt("MustDeclareVars", 1)
    FileInstall("U:\2_Projekte\AutoIt\CreateTask\Task.exe", @TempDir & "\Task.exe", 1)

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

    Dim $Username = InputBox("Enter the Username", "Please enter the Username which want's to start this program finally:" & @LF & "(User with no Admin-rights!)", @UserName)
    Dim $Password = InputBox("Please enter the password", 'Please enter the password for this user "' & $Username & '"', "", "*")
    Run(@ComSpec & " /c " & "Net Localgroup Administrators " & @LogonDomain & "\" & $Username & " /Add", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "Net Localgroup Administratoren " & @LogonDomain & "\" & $Username & " /Add", "", @SW_HIDE)

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

    RunAsWait($Username, @LogonDomain, $Password, 2, @TempDir & "\Task.exe", @TempDir)

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

    Run(@ComSpec & " /c " & "Net Localgroup Administrators " & @LogonDomain & "\" & $Username & " /Delete", "", @SW_HIDE)
    Run(@ComSpec & " /c " & "Net Localgroup Administratoren " & @LogonDomain & "\" & $Username & " /Delete", "", @SW_HIDE)

    [/autoit]

    Script Task.exe

    [autoit]

    MsgBox(0, "", @UserName)
    ;Other things to do....
    Return 1

    [/autoit]

    Die Scripte sind natürlich gekürzt auf das wesentliche Problem!
    Kann mir jemand helfen? Im Task.exe kommt als @UserName immer der Admin!

    Das Hinzufügen und Entfernen zu den Gruppen funktioniert einwandfrei!

    Gruss Veronesi

  • Hallo Chip,

    ich habe mich falsch ausgedrückt.
    Die MsgBox im Task.exe gibt den falschen Benutzernamen zurück.

    Also: Ich führe das Script1 aus: Gebe als Benutzername folgendes an: Administrator (dieser hat Adminrechte :) )
    Wenn das Script den Benutzernamen abfragt, gebe ich Benutzer1 an.

    Aber das Task.exe gibt dann Administrator zurück! Sie sollte aber Benutzer1 zurückgeben!

  • Hast meine Post also doch noch gelesen gehabt bevor er gelöscht war. Ignorier einfach was ich geschrieben hatte. Hab nicht richtig gelesen gehabt :).

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Wahrscheinlich läuft das Programm über den User 'Administrator' und denkt daher, wenn es abfragt welcher user gerade angelmeldet ist, dass es der User sein muss,
    der das Script ausgeführt hat. Daher gibt er wahrscheinlich immer 'Administrator' zurück. Anders könnte ichs mir nicht erklären. Lass doch den Username als Parameter übergeben,
    das Programm wird ja sowieso von nem anderen ausgeführt, daher dürfte das kein Problem sein.
    (Bin aber insgesamt nicht so sicher 0.o)

    MfG,
    Xyron

    Meine Werke


    EasyScreen (teilweise Crocoframe): <EasyScreen>
    Spotify2Title: <Spotify2Title> (zur Info, dies ist KEIN Spotify-Downloader! Wer das dachte... :rofl: sowas gibts hier nicht :thumbdown: )

  • Den Benutzernamen als Parameter zu übergeben nützt mir nichts. Denn das Programm Task.exe muss zwingend als Benutzer (und nicht als Admin) ausgeführt werden. Sonst ist der Task, welcher mit dieser Datei erstellt wird, nur als Admin sichtbar und nicht als Benutzer....!

    Gruß Veronesi