Programm als Admin ausführen mit eingeschränkten Rechten

  • Moin,


    Wir benutzen auf der Arbeit eine Zeiterfassungssoftware die mit AutoIt programmiert wurde. Die Software benötigt Administrator Rechte.

    Bis jetzt war das kein Problem, da jeder Benutzer Lokal Administratorrechte hatte.


    In naher Zukunft werden die Benutzer nur noch über eingeschränkte Rechte verfügen(Benutzerrechte).


    Nun zur eigentlichen Frage:

    Ist es möglich die Zeiterfassungssoftware mit Administratorrechte zu starten, auch wenn der angemeldete Benutzer über keine Administrationsrechte verfügt?


    Ich verfüge natürlich über Administrationsrechte auf jeden PC und könnte das Programm somit installieren.


    Lg und danke

  • Das programm startet/funktioniert leider nicht ohne die entsprechenden Rechte.

    Es handelt sich jedoch nicht um ein AutoIt Problem, es würde auch reichen wenn das Programm per Windows Einstellungen ausgeführt wird, Nur leider kenne ich mich nicht besonders gut mit der Windows Administration aus.

  • Ist es möglich die Zeiterfassungssoftware mit Administratorrechte zu starten, auch wenn der angemeldete Benutzer über keine Administrationsrechte verfügt?

    Im Prinzip... ja, aber egal ob du es direkt über die Windows-Einstellungen oder mit RunAs machst, wird nach einem Administrator-Passwort gefragt, was ja wohl nicht Sinn der Sache ist - egal, wie die UAC eingestellt ist.

  • Da die Software selbst geschrieben ist würde ich erstmal prüfen ob die Administratorrechte wirklich notwendig sind, bzw. wofür.

    Da der Sinn der Software nicht wirklich ein administrativer ist sollte das doch auch ohne zu bewerkstelligen sein.


    Sofern die Rechte nur für eine Selbstupdate Routine benötigt werden würde ich dir empfehlen die Updateroutine als Systemdienst auszulagern (vergleiche z.B. Firefox). Alternativ könnte man das im Unternehmen auch passiv lösen, d.h. du rollst das Update serverseitig auf alle Clients aus und benötigst dann nur auf Serverseite administrative Rechte auf den Clients (z.B. Domänenadministrator Account ).

  • Versuch es mal mit folgendem Aufruf als normaler Benutzer:

    Code
    1. cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" "%1""

    Für die %1 den Pfad zu der .exe-Datei, die normalerweise per UAC nach Admin-Rechten schreit, eintragen.

  • Hi.


    Den Quellcode zu dem autoit Script hast Du sicher. Kommentiere mal die Zeile


    #requireadmin


    aus und prüfe, ob es auch *OHNE* Administrator Rechte läuft. Das sollte für die allermeißten Autoit Scripte der Fall sein.


    Schöne Grüße, Rudi.

  • Ja das ist auch so gewollt.
    Viele Programme verlangen per se Adminrechte aber führen dann keine einzige Aktion aus welche tatsächlich diese Rechte bedingen würde.

    Daher kommt es auf den Versuch an inwieweit tatsächlich Adminrechte benötigt werden.

  • Hallo,


    du bnötigst nur einen Benutzer mit Adminrechten und vier Zeilen zusätzlichen Code, um dein Script mit Adminrechten zu starten. Folgender Code muß am Anfang deines Scriptes eingefügt werden.

    AutoIt
    1. If Not IsAdmin() Then
    2. RunAs("<localadminuser>", @ComputerName, "<password>", 0, @ScriptFullPath, @ScriptDir, @SW_HIDE)
    3. Exit
    4. EndIf

    Sollte es sich beim Benutzer um ein Domänenkonto handeln, muß @ComputerName durch die Domäne ersetzt werden.


    Der Code prüft ob das mit administrativen Rechten gestartet wurde, ist das nicht der Fall, wird das Programm erneut als Administrator gestartet und das ohne administrative Rechte, wird beendet.


    Sollte in deinem Programm _Singleton aufgerufen werden, müssen die Zeilen davor eingefügt werden.

  • If Not IsAdmin() Then
    RunAs("<localadminuser>", @ComputerName, "<password>", 0, @ScriptFullPath, @ScriptDir, @SW_HIDE)

    So ein ähnliches Konstrukt hab ich mir auch schon vor einiger Zeit geschaffen um eininge wenige Programme mit Adminrechten zu

    starten, auf einem Win7 64 bit das nur mit einem normalen Benutzerkonto läuft ohne Möglichkeit der Umschaltung auf Adminrechte.


    Das heisst ich muss jedesmal wenn ich ein Programm mit erhöhten Rechten ausführen will zwingend immer die Logindaten eingeben.

    Das Problem kann ich damit schön lösen, es kommt lediglich ein Hinweis der UAC, was aber auch gut ist zu wissen,

    da wird ein Programm mit höheren Rechten ausgeführt.


    Leider funktioniert das aber nur, wenn das Programm das mit erhöhten Rechten laufen soll, nicht schon von sich aus Adminrechte erfordert.

    Gibt es hier eine Möglichkeit, auch über RunAs als normaler Benutzer ein Programm als Admin zu starten das schon selbst per Manifest

    Adminrechte anfordert.

  • Leider funktioniert das aber nur, wenn das Programm das mit erhöhten Rechten laufen soll, nicht schon von sich aus Adminrechte erfordert.

    Gibt es hier eine Möglichkeit, auch über RunAs als normaler Benutzer ein Programm als Admin zu starten das schon selbst per Manifest

    Adminrechte anfordert.

    Dann hast du aber in deinem Sciprt evtl. noch ein #RequireAdminstehen, dass solltest du dann entfernen.

  • Sorry das ist ein Missverständnis, ich versuche irgendein

    anderes Programm zu starten z.B. einen portablen Firefox

    und dieser verlangt von sich aus schon per manifest die Adminrechte.

    Und dann klappt der Aufruf per RunAs eben nicht. Lässt sich dieses Problem umgehen??

  • Man kann die Benutzerkontensteuerung für ausgewählte Anwendungen über die Windows Aufgabenplanung umgehen.


    Das Prinzip ist unter anderem hier beschrieben:

    https://www.petri.com/bypass-uac-using-desktop-shortcut


    Eine Verknüpfung ist dafür nicht notwendig, der geplannte "Task" kann auch aus einer beliebigen Anwendung heraus gestartet werden.


    Wenn man damit ein wenig spielt kann man sich vermutlich auch ein Konstrukt basteln, welches beliebige dynmaisch definierbare Anwendungen über einen einzigen "Geb mir Rechte Task" mit erhöhten Rechten startet.


    Adminrechte werden allerdings einmalig für die Installation des "Tasks" benötigt, danach sollte das auch als einfacher Benutzer ausführbar sein.

  • Naja ich hab das jetzt mal für dich getestet und ja, es gibt eine Möglichkeit, zumindest hat das bei mir funktioniert.

    Du hast Recht, wenn das Programm an sich Adminrechte fordert, ist ein Aufruf mit RunAs() nicht möglich.

    Mit der Aufgabenplanung kann man das Problem aber überwinden, nämlich in dem du eine Aufgabe erstellst, die das Programm startet und du dann über ein AutoIt-Skript z.B. die Aufgabe startest und nicht das Programm an sich.


    Wie das funktioniert:


    1. Du startest die Aufgabenplanung ein einziges Mal mit Administratorrechten.

    2. Du erstellst eine neue Aufgabe indem du auf Aufgabe erstellen klickst.




    3. Als Name gibst du dann einen logischen Namen ein

    4. Unten unter "Sicherheitskonto" muss im Feld "Beim Ausführen der Aufgaben folgendes Benuterkonto verwenden:" ein Adminkonto eingetragen sein, da die Aufgabe ja dann in seinem Namen ausgeführt wird, wodurch die UAC wegfällt.

    5. Unten das Kästchen "Mit höchsten Privilegien ausführen" muss unbedingt angeklickt sein, weil das heißt ja soviel wie "als Admin ausführen"

    6. Bei "Konfigurieren für" wäre es auch sinvoll, das auf dem PC ausgeführte Betriebssystem auszuwählen, falls möglich

    7. Im zweiten Tab "Trigger" kannst du irgendeinen Trigger verwenden, solange er einmal ausgeführt wird, weil du deine Aufgabe sowieso manuell über das Skript startest und somit Keinen brauchst (Trigger dienen zum automatischen Ausführen der Aufgabe)

    8. Im Reiter "Aktion" musst du nun eine neue Aktion erstellen, nämlich vom Typ "Programm starten" mit dem Pfad des Programms, dass dann mit Adminrechten gestartet werden soll.

    9. Die Bedingungen und Einstellungen sind selbsterklärend sofern du diese überhaupt benötigst

    10. Stelle die Aufgabe fertig


    Die Aufgabe kannst du jetzt ganz einfach ohne RunAs und #RequireAdmin mit einer Zeile Code starten:


    Run(@SystemDir & '\schtasks.exe /RUN /TN <<Name deiner Aufgabe>>')


    <<Name deiner Aufgabe>> musst du durch den Namen in Punkt 3 ersetzen. Anführungszeichen werden nicht benötigt.


    Bei Fragen gerne nochmal schreiben ;)


    LG NO1 :-)

  • Da war wohl jemand schneller :D... hab wahrscheinlich zu viel geschrieben... UPS

  • Danke misterspeed und NO1 :-) für die Tipps.

    Und nein No1 du hast nix zu ausführlich beschrieben, da das Thema doch schon etwas komplex ist, isses doch lobenswert

    einen detailiierten Tipp zu bekommen.

    Ich hab schon mal versucht es per Taskplaner hinzukriegen, aber da war wohl irgendwo noch ein Fehler drin,

    Die erstellte Aufgabe konnte ich damals nicht starten, aber diesesmal mit deiner Hilfe klappt es perfekt.


    Dankeschön

    Tuxedo