Frage zu #RequireAdmin

  • Hallo,

    früher, als ich noch mit der AutoItVersion 3.3.8.1 gearbeitet hatte war alles noch in Ordnung.

    Nun bin ich auf die AutoIt-Version 3.3.14.2 umgestiegen und damit gingen die Probleme los.

    Zuerst, ich verwende Windows 10 1709 64bit als Betriebssystem und habe die UAC auf die unterste Stufe gestellt, weil ich ansonsten von UAC-Meldungen regelrecht erschlagen werde. Ich bin auch der einzige Benutzer des Rechners und habe daher auch nur ein Konto.

    Nun zu meinem Problem:

    Es geht um dieses "#RequireAdmin", das ist ja anscheinend wegen der UAC nötig, um der UAC mitzuteilen, dass das Script Admin-Rechte benötigt und deswegen nicht "rummeckern" soll.

    Ich habe da z.B ein Script, welches zuerst gestartet wird. In diesem Script steht am Anfang dieses #RequireAdmin. Dieses Script ruft ein anderes Script mit Run() auf und in diesem Script steht auch dieses #RequireAdmin. Das erste Script funktioniert und ruft auch das zweite Script auf. Aber dieses zweite Script spinnt dann total, da werden Befehle einfach ignoriert (aber bei jedem Aufruf andere) oder Variablen habe auf einmal ganz falsche Werte oder das zweite Script wird komplett übersprungen usw.

    Auch kann man z.B. keinen Autostart-Eintrag zu einem Script ausführen, wenn in diesem Script dieses #RequireAdmin steht.

    Oder mit #RequireAdmin funktioniere plötzlich auch einige Run()-Befehle im Script nicht mehr.

    Wie geschrieben, unter 3.3.8.1 funktionierte das alles einwandfrei, aber in der Version 3.3.14.2 ist da anscheinend etwas geändert worden.

    Da muss ich wohl alle Scripte umschreiben, damit sie auch mit 3.3.14.2 funktionieren. Nur vorher muss ich genau wissen, wie man dieses #RequireAdmin in den beschriebenen Fällen einsetzt.

    Darf man #RequireAdmin überhaupt nochmal benutzen, wenn es in einem vorherigen Script schon einmal benutzt wurde?

    Und wie erstellt man einen funktionierenden Link zu einem Script, in dem #RequireAdmin stehen muss (wenn man es einfach weglässt, so funktiioniert vieles in dem Script nicht)?

    MfG:

    BigRox

    P.S. mit dem

    If Not IsAdmin Then

    #RequireAdmin

    EndIf

    geht es auch nicht.

  • Ich kann nicht sagen ob es überall so läuft wie bei meinem Windows 7 Pro x64,

    aber wenn ich ein Script mit Adminrechten starte, laufen auch alle daraus gestarteten Scripte und

    Programme unter Adminrechten.

    Ich denke das sollte auch bei dir so sein.

    Ausserdem schreibe ich meine Scripte möglichst so, daß sie keine Adminrechte benötigen,

    das braucht es eigentlich nur wenn man in der Registry herumautomatisieren will oder in

    Ordnern arbeitet für die einem die Rechte fehlen(dann verschaffe ich mir die Rechte auf anderem Wege.).

  • Hallo,

    Ausserdem schreibe ich meine Scripte möglichst so, daß sie keine Adminrechte benötigen,

    das braucht es eigentlich nur wenn man in der Registry herumautomatisieren will oder in

    Ordnern arbeitet für die einem die Rechte fehlen(dann verschaffe ich mir die Rechte auf anderem Wege.).

    genau dass mache ich in einigen Scripten.

    Z.B. ändere ich mit einem Scirpt viele Einstellungen vom Explorer, Maus, Taskleiste, Desktop, Taskplaner usw. und das geht nur mit Adminrechten.

    (aber auch Schlüssel für die man eigentlich keine Admin-Rechte braucht, werden nicht geändert).

    Aber so einfach, mit einem #RequireAdmin im Script, kann es eigentlich auch nicht gehen, sonst könnte sich ein "böser Bube" so auch ganz einfach Admin-Rechte verschaffen.

    Aber es muss ja auch irgendwie noch gehen, sonst währe ja vieles mit AutoIt nicht mehr möglich.

    Wenn ich z.B. ein Script in dem #RequireAdmin steht durch einen Doppelklick selber starte, so funktioniert es.

    Wenn ich aber dieses Script automatisch per Autostart starten lasse, so geht es nicht mehr.

    MfG:

    BigRox

  • Versuche es mal hiermit...

  • Hallo Bitnugger,

    ich habe es eben mal ausprobier.

    die kompilierte EXE eines Scripts lässt sich nur per Autostart starten, wenn man das #RequireAdmin weglässt und als Kompiliererdirektive:

    "#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker"

    schreibt.

    Damit frage ich mich aber, wozu ist dann dieses #RequireAdmin überhaupt noch gut?

    Anscheinend braucht man es nur noch damit die UAC einem Script (EXE) nicht andauernd mit ihrem "rummeckern"die "Quere" kommt.

    Aber wieso darf man es dann an gewissen Stellen keinesfalls reinschrieben? Oder stellt die Direktive "asInvoker" die UAC auch ruhig?

    MfG:

    BigRox

  • #RequireAdmin ist für Skripte vorgesehen, die von AutoIt ausgeführt werden.

    Wird das Skript kompiliert, müssen die Wrapper-Direktiven verwendet werden. Dadurch wird eine RT_MANIFEST-Ressource zur ausführbaren Datei hinzugefügt, die der Explorer dann liest und ein zusätzliches Schildsymbol über dem Symbol der EXE anzeigt, um dem User zu signalisieren, dass die (aktivierte) UAC meckern wird, wenn das Programm ausgeführt werden soll.

    Programme mit erhöhten bzw. administrativen Rechten mit Windows starten (Autostart) wird von Microsoft aus gutem Grund unterbunden, es geht aber z.B. mit dem Taskplaner...

    "Invoker" heißt nichts anderes als "Aufrufer"... was aber eben keine administrativen Rechte beinhaltet, weshalb die UAC dann auch nicht meckert.

    2 Mal editiert, zuletzt von Bitnugger (19. Februar 2018 um 20:14)

  • Ist das nicht ein, mehr oder minder bekanntes Problem? Ich erinnere mich dunkel, dass es ein grundsätzliches Problem mit Programmen und Admin Rechten im AUTOSTARTORDNER gibt? Mit autoit hat das eigentlich (erstmal) nichts zu tun.

    Die meisten Workarounds lösen das mit dem Taskmanager. Schau mal

    hier:

    http://www.thewindowsclub.com/autostart-programs-windows-10-make

    oder

    http://walter.bislins.ch/blog/index.asp…f%FChren+lassen

    Weshalb das von der einen autoit Version zur anderen nicht mehr funktioniert sehe ich so auch nicht. Eigentlich htte das aus dem Autostart Ordner noch nie funktionieren dürfen.


    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Hallo,

    also sollte das #RequireAdmin eigentlich nur in einem Script beachtet werden und wenn ich das Script kompiliere, so müsste es eigentlich ignoriert werden, weil es dann ja die Kompiler-Direktiven gib.

    Es wird aber nicht ignoriert, da es ein Ausführen des mit Kompiler-Direktiven kompilierten Scriptes unmöglich macht.

    Das man ein kompiliertes Script mit Admin-Rechten früher per Autostart aufrufen konnte, das hat mich auch schon gewundert, damit währen ja alle Sicherheitsbemühungen von Microsoft ganz leicht auszuhebeln.

    Einfach #RequireAdmin ins Script schreiben und schon währe die Malware installiert=O.

    Und das eine EXE früher Admin-Rechte brauchte um zu laufen und jetzt dafür auch schon Invoker reicht = Verwirrung total:).

    Anscheinend hält sich die AutoIt-Version 3.3.14.2 da genauer an die Regeln.

    MfG:

    BigRox

  • Hallo,

    also sollte das #RequireAdmin eigentlich nur in einem Script beachtet werden und wenn ich das Script kompiliere, so müsste es eigentlich ignoriert werden


    Nein, da bist du entweder im Irrtum oder aber es lässt sich nicht eindeutig bestimmen, weil es

    eben zu viel unterschiedliche Systemkonstallationen gibt.

    Ich verwende Autoit+ Scite als Portable und starte es als Normaler Nutzer ohne Adminrechte,

    wenn ich ein Script mit RequireAdmin=Y kompiliere, dann verlangt die danach gestartete EXE

    ein Admin Passwort von mir und es läuft auch wirklich mit Admin Rechten.

    Kompiliere ich das gleiche Script ohne RequireAdmin=Y, läuft die kompilierte EXE ohne Admin Rechte und es wird auch kein Passwort beim Start verlangt.

    Ich habe in meinem angemeldeten Benutzer auch keine Adminrechte wie sonst üblich bei Windows 7.

    Wenn ich Admin Rechte anfordere, dann muss ich immer und ohne Ausnahme das Passwort

    eines Benutzterkontos angeben das Adminrechte besitzt.

    Ich hoffe das bringt dir etwas Erleuchtung.

  • BigRox,

    also den Unterschied zu Script und Exe sehe ich eigentlich nicht. Ich glaube nicht, dass sich ein compiliertes Script anders verhällt als eines das im Interpreter läuft.

    Schreib doch einen 2 Zeiler der einen Änderungsbefehl für die Reg enthällt und lass den mal in allen 4 besprochenen Varianten laufen.

    Beachte bitte auch mit welchen Rechten Du eingeloggt bist. Hast Du bereits Admin Rechte oder bist Du gar bereits als Admin unterwegs? Oder anders ausgedrückt. Du schreibst ja, UAC sehr weit zurückgedreht... wie weit? Kannst Du von Deinem Acount aus Änderungen in der Reg ausführen (händisch) ohne dass Du ein Admin PSW brauchst? Wenn ja dreh das UAC soweit zu dass Du ein Admin PSW zur Änderung benötigst und schau was autoit dann macht.

    Ich denke wie folgt:

    Was macht ein requireAdmin wenn man entweder als Admin unterwegs ist - oder für die Aktion keine Admin Rechte (mehr) notwendig sind weil UAC auf null? Dann braucht man kein Admin PSW? Wird dann auch keines abgefragt? Denn wenn Du nicht die notwendigen Rechte hättest - gilt das was Tuxedo schreibt

    Ins Script schreibt man es - weil man ja nicht wissen kann wie UAC und User Rechte auf dem Zielrechner sind.

    requireAdmin solltest Du eigentlich nur für Aktionen benötigen für die auch der eingeloggte USER Admin Rechte braucht.

    Zum Thema Autostart siehe #7

    @Tuxedo da ich keine 7er und 10er Wins in Griffweite habe, kannst Du nicht mal einen 2 Zeiler schreiben mit einer Aktion die eindeutig Admin Rechte braucht (Irgendeinen Wert in die reg schreiben? Braucht doch glaube ich Admin Rechte?) und ausprobieren wie sich das verhällt? Normalerweise muss ja - wie Du richtigerweise schreibst ein Admin PSW abgefragt werden. Wenn das so ist werden unsere Erwartungen erfüllt. Wenn Du danach UAC auf null fährst - brauchst Du für Reg schreiben ja keine Admin Rechte. Was macht der zweizeiler nun - meine Erwartung ist - er fragt keine Admin Rechte nach - weil er keine mehr braucht? Ich kann das mangels Win7/10 gerade nicht prüfen.

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • alpines was verstehst Du daran nicht?

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Lies dir den Satz nochmal gründlich durch. Du schreibst, dass sich ein kompiliertes Script sich nicht anders verhält als eins, das durch den Interpreter läuft.

    Das ist ja wohl selbstverständlich, der Interpreter wird beim Kompilieren beigelegt und das Script wird durch den Interpreter gejagt wenn du die "kompilierte" Exe-Datei startest.

    Es macht de facto keinen Unterschied ob ich ein AutoIt-Script starte oder "kompiliere" und starte. Beides das gleiche.

  • Peter ich wollte deinen Wunsch gerade erfüllen, kann aber die UAC anscheinend nur mit einem Neustart abschalten, ich kann sie zwar um 2 Stufen herabsetzen, aber abschalten lässt er mich

    nur wenn ich mich direkt als Admin anmelde und ich kann momentan leider nicht meine laufende Sitzung risikieren, dann müsste ich alles wieder von vorne beginnen und das wäre sehr negativ.

    Aber deine reste Frage ist schon getestet, wenn ich als normaler Benutzer agiere, kann ich meinen HP-Emulator nicht als Admin starten(was das Tool braucht),

    wenn ich aber RequireAdmin=Y im Script aktiv habe verlangt der Start des Scripts(oder auch die kompilierte EXE) definitiv nach dem Admin Passwort

    und wird dann auch mit Adminrechten ausgeführt, sprich der HP-Emulator läuft und funktioniert richtig.

    Wie kann ich die UAC sonst noch abschalten ohne die laufende Sitzung zu beenden.

    Ich habe schon versucht die Systemsteuerung als Admin zu starten, Eingabe des Admin Passwortes akzeptiert, aber sobald ich im Reiter Benutzerkonto

    die UAC

    bearbeiten will, wird nochmal nach dem Passwort gefragt, ich gebe es nochmal an und kann trotzdem die UAC nur reduzieren aber nicht abschalten.

  • Versuche es mal so...

    Windows + R drücken, "msconfig" eingeben, mit Enter abschicken.

    Zum Reiter Tools wechseln, dort "UAC-Einstellungen ändern" auswählen und auf den Button "Starten" klicken...

  • Habs geschafft die UAC komplett abzuschalten.

    Also Bei meinem Normalen Account muss ich natürlich bei ausgeknipster UAC trotzdem noch

    das Admin Passwort angeben. Es gibt allerdings einen entscheidenden Unterschied:

    Ich hatte früher eine Zeit in der ich CheatEngine mehrere zig-mal am Tag gebraucht habe

    und hab mir dehalb eine Lösung gebastelt damit ich nicht jedesmal das Adminpasswort eingeben musste. Allerdings verlangte natürlich die UAC immer noch eine Bestätigung ob ich mit dem Adminzugriff

    einverstanden bin. Diese Meldung wird jetzt mit ausgekipster UAC nicht mehr gezeigt.

    Ich hab mich inzwischen schon an diese Fragerei gewöhnt und aktiviere sie jetzt wieder

    Schönen Abend

    Tuxedo
    I

    Einmal editiert, zuletzt von Tuxedo (20. Februar 2018 um 19:58)

  • Wer hätte das gedacht, ich weiss nicht warum Bitnugger, aber das abschalten über msconfig funktioniert tadellos. Warum geht das dann nicht direkt über die Systemsteuerung?? echt merkwürdig.

    Na wie auch immer, es geht also auch ohne sich direkt als Admin anmelden zu müssen.

    Mal so nebenbei gefragt Bitnugger, warum kannst du deinen neuen Beitrag zwischen meine schon vorhandenen Beiträge posten?? So eine Funktion hab ich nirgends gesehen.

  • Warum geht das dann nicht direkt über die Systemsteuerung?

    Evtl. weil Microsoft die "Mausschubser" nicht überfordern will... und wer die erweiterten Wege bzw. "Command line tools" nutzt, wird halt wissen, was er da tut... und bekommt auch andere Möglichkeiten angeboten.

    Mal so nebenbei gefragt Bitnugger, warum kannst du deinen neuen Beitrag zwischen meine schon vorhandenen Beiträge posten?? So eine Funktion hab ich nirgends gesehen.

    Ich auch nicht... dann werde ich meinen Beitrag wohl früher abgeschickt haben, als du deinen... und du hast meinen aber erst gesehen, nachdem du die Seite aktualisiert hast.

  • alpines

    sage ich etwas anderes? Lies mal was der TE geschrieben hat! Und ja es ist selbstverständlich - für Dich und mich. - und darf man es deswegen nicht schreiben? Auch selbstverständliches darf wohl mal erwähnt werden!

    Gruß

    Peter

    Ps.: Hättest Du ge...... geblieben, --> Nein - Google ergänzt den Satz nicht :rofl:

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Dem Interpreter ist es völlig egal, ob das Script direkt oder als kompilierte Exe "verpackt" ausgeführt wird. Zu beachten ist allerdings, dass Direktiven für den AutoIt-Wrapper nur in der kompilierten Exe zum Tragen kommen und dass diese vom Explorer ausgewertet werden.