Programm mit Administratorberechtigung ausführen

  • Hallo allerseits!

    Ein AutoIt-Programm, dass ich geschrieben habe, soll ausgeführt werden, jedoch braucht es Administrationsberechtigungen:

    [autoit]


    #RequireAdmin
    MsgBox(0, "", "Läuft!")

    [/autoit]

    Nun möchte ich das Programm automatisiert starten, ohne dass ständig nach dem Passwort gefragt wird (habe ich so eingestellt, dass bei UAC-Dingen nach einem Passwort gefragt wird).

    Nun dachte ich an RunAs. Doch wie habe ich das auszuführen? Ich würde Passwort und Nutzername in das Skript eintragen, es Obfuscaten (damit nach Decompilen von einem Dritten, das Passwort nicht ersichtlich wird), Kompilieren und das Skript löschen.

    [autoit]


    RunAs("Matthias", "", "PASSWORT", 0, @ScriptDir & "\Skript.exe")

    [/autoit]

    Doch welche Domäne muss ich angeben? Und welches Flag habe ich zu setzen?

    Vielen Dank bereits im Voraus und viele Grüße,
    Matthias

  • Ich denke solang Du in keiner Domäne bist ist das dein Rechnername.

    [autoit]

    RunAs("Matthias", @ComputerName, "PASSWORT", 0, @ScriptDir & "\Skript.exe")

    [/autoit]


    LG

    Schnuecks

  • Hallo Schnuecks!

    Leider öffnet sich immer noch die UAC - egal wie nützlich sie auch ist.

    Gibt es Alternativen?

    Gruß,
    Matthias

  • Zitat

    Doch welche Domäne muss ich angeben?

    na halt die in der Du Dich aufhälst kann aber auch user@host sein

    pc\user
    domain\user beides ist möglich

    Achtung Anfänger! :whistling:

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

  • du meinst automatisch oder allgemein.
    Mit Domäne ist AD gemeint, nicht Inet Domain und wenn Du Dich gegen eine authentifizierst / angmeldest sollte Dir der Namen schon mal aufgefallen sein. :)

    zum Beispiel im Anmeldedialog von Windows die Inputbox unter dem Password ist nur bei Domänennutzung sichtbar.
    Ansonsten siehst Du den Dominennamen im Eigenschaftendialog des Arbeitsplatz bei Computername ändern.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

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

  • Erneut vielen Dank!

    Jedoch - warum funktioniert dann nicht die vorgeschlagene Lösung mit dem Computernamen?

    Gruß,
    Matthias

  • Ich denke, für deine Zwecke ist der Windows-Taskplaner ("Aufgabenplanung") doch ganz gut geeignet?

  • Ich bin mir diesbezüglich nicht sicher. Aufgrund einer unsauberen Programmierung und eines seltsamen ferngesteuerten Programms, dass sich nicht so einfach steuern lässt (dazu folgt noch ein Thread ;-)), bin ich dazu "gezwungen", dass das Fenster sichtbar ist. Ideal wäre für mich das Ausführen während des Herunterfahrens des Computers. Ich dachte dazu an eine Verknüpfung auf dem Desktop, die das Programm (ohne Kennwortnachfrage per UAC) ausführt und dann herunter fährt.

    Funktioniert die Aufgabenplanung auch mit Programmen, die Administrationsrechte benötigen?

    Viele Grüße,
    Matthias

  • Nach längerer Zeit melde ich mich mal wieder ;)

    Leider funktioniert das Ganze nicht so wie ich es mir vorstelle. Generell muss es doch über RunAs gehen - warum tut es das nicht?!?

    Gruß,
    Matthias

  • Generell muss es doch über RunAs gehen - warum tut es das nicht?!?

    Weil ein gerade angemeldeter User "X" nicht das Fenster der Anwendung welche unter User "Y" gestartet wurde sieht ! Auch nicht oder gerade nicht Anwendungen die ein Admin "Y" gestartet hat.

    Eine Lösungsidee wäre: PSExec anstatt RunAs.

    PSExec.exe -u [Dom\User] -p [PW] -i [Kommando]

    Scheinbar ist der Parameter -i (interkativ mit dem Desktop des angemeldeten Users) bei einem lokalen Ausführen nicht einmal notwendig.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Vielen Dank KaFu für den Link, doch hat mich dieses Problem schon ergriffen!

    Micha_he, danke auch dir - jedoch: Es handelt sich doch um den selben Benutzer, ich möchte doch nur mit Administrationsberechtigungen ausführen?

    Gruß,
    Matthias

  • Micha_he, danke auch dir - jedoch: Es handelt sich doch um den selben Benutzer, ich möchte doch nur mit Administrationsberechtigungen ausführen?

    Dann also doch anderer Benutzer !
    Wenn Du etwas wie RunAS, psexec oder "Ausführen als" benutzt, läuft der Prozess unter einem anderen Benutzer. Und weil der Prozess nicht mehr unter dem Benutzer läuft dem der Desktop "gehört", siehst Du auch nix.

    Und hier kommt "psexec". "-i" = interaktive mit dem Desktop des aktuellen Benutzers.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Eigentlich doch nicht. Ich bin bereits auf einem Nutzer mit Adminberechtigungen, möchte aber die UAC umgehen. Aber vielen Dank für deine Lösung, ich werde es testen!

    Gruß,
    Matthias

  • Ich würde sagen, der Grund warum die UAC immer noch aufgeht ist folgender:
    Du startest es mit RunAs() über einen Standartnutzer und hast im anderen Skript die UAC-Abfrage, die das Programm auf Adminebene hebt. Dazu brauch die UAC aber ein Admin-Password.

    Damit die UAC nicht meckkert, musst du im Starter-Programm unter RunAs()  ein Admin-Konto eingeben und in dem zu startenden Programm das #RequireAdmin entfernen.
    Ich glaube so müsste es gehen.

    (Idee beruht auf dem Gedanken, das das Konto "Matthias" ein Standartbenutzer (ohne Admin-Rechte) ist.)

  • Hallo Script-Bär!

    Vielen Dank für deinen Hinweis.

    Tatsächlich handelt es sich bei Matthias um ein Adminkonto. Ich werde es auch ohne #RequireAdmin versuchen!

    Gruß,
    Matthias

  • Hallo Script-Bär!

    Ich meinte mit Tatsächlich, dass alles seine Richtigkeit besaß. :D

    Gruß,
    Matthias