Seite 1 von 1

Ein AutoIt-Skript als lokaler Administrator ausführen?

Veröffentlicht: 13. Juni 2018 - 16:55 Uhr
von Jonattend
Hallo,

ich komme mit WAPT gut voran und erstelle und modifiziere bestehende Pakete.

Für Schulungszwecke muss ich eine Anwendung installieren, die beim ersten Start (und nur dann) die Eingabe von Name, Organisation und Seriennummer erfordert.

Ich habe bereits verschiedene Ansätze erfolglos versucht:
- Erstellung eines RegShots vor und nach der Eingabe der Seriennummer und anschließender Export in eine .reg-Datei
- Stille Ausführung der .reg-Datei nach der Installation (über die Funktion `def install()` im WAPT-Paket): Die Software wird nicht aktiviert... Möglicherweise wurden nach der Lizenzeingabe weitere Dateien geändert oder erstellt.

Ein weiterer Test:
Installation der Anwendung über WAPT mit AutoIt - Ausführung
eines AutoIt-Skripts in der WAPT-Funktion `def install()`, um die Anwendung zu starten und die Tastatureingabe zu simulieren...
Das Programm wird erfolgreich installiert, aber das Problem ist, dass das AutoIt-Skript unter dem Systemkonto ausgeführt wird... und das Programm scheint das Skript nicht zu erkennen, wenn es unter dem Systemkonto gestartet wird.

In meinem AutoIt-Skript habe ich den Start des Programms als lokaler Administrator erzwungen.
Es wird korrekt in den Prozessen angezeigt, aber mein AutoIt-Skript (ausgeführt als Systemkonto) wird nicht ausgeführt.
Im Endeffekt läuft ein Programm als lokaler Administrator und ein Skript in der Warteschlange als Systemkonto.
Beide als Systemkonto auszuführen, behebt das Problem nicht.

Ich habe im Python-Skript keine Option gefunden, um die Ausführung als Administrator zu erzwingen.

Gibt es vielleicht eine einfachere Methode?

PS: Wenn ich die Software normal installiere und mein AutoIt-Skript anschließend manuell als Administrator ausführe, funktioniert die Aktivierung.

Vielen Dank für alle Vorschläge. ;)

Betreff: Ausführen eines AutoIt-Skripts als lokaler Administrator?

Veröffentlicht: 14. Juni 2018 – 13:45 Uhr
von Jonattend
Hallo,
ich konnte den Softwarehersteller kontaktieren, der mir soeben eine an meine Lizenz und meine Institution angepasste Lizenzdatei zur Verfügung gestellt hat.
Das Kopieren und Einfügen der Lizenzdatei an den richtigen Ort (über `def install()`) sollte also funktionieren.

Ich teste es gerade und melde mich wieder. ;)

Betreff: Ausführen eines AutoIt-Skripts als lokaler Administrator?

Veröffentlicht: 14. Juni 2018 – 15:56 Uhr
von Jonattend
Immer noch nichts... Der Herausgeber hat mir zwar eine Lizenzdatei zur Verfügung gestellt... aber sie muss einmal gestartet werden, um sie zu aktivieren... schlimmer noch, es öffnet sich ein Dialogfeld... das ich erst schließen muss, bevor ich endlich sehe, dass die Software aktiviert ist... Ich suche weiter, aber mir gehen langsam die Ideen aus :rollen:

Betreff: Ausführen eines AutoIt-Skripts als lokaler Administrator?

Veröffentlicht: 14. Juni 2018 – 18:13 Uhr
von Sfonteneau
Zwei mögliche Lösungen? 1.

Einen interaktiven geplanten Task erstellen, der die Installation startet; meiner Meinung nach funktioniert die Tastaturemulation darin.
Eine weitere Möglichkeit:

Einen interaktiven Windows-Dienst erstellen, der die Installation startet, und diesen dann ausführen.

Beide Lösungen sind unschön…

Ich kann weder `runas` noch `psexec` als Systemkonto verwenden.

Eine weitere Lösung:

Ich habe gesehen, wie ein Freund das gemacht hat.

Administrator-Benutzername und -Passwort in AutoIt integrieren (ich weiß, dass es möglich ist).
Die AutoIt-Installation in einer `session_setup` starten; AutoIt wird dann automatisch als Administrator gestartet.

Allerdings… ist es einfach, das Passwort aus AutoIt auszulesen…

Simon

Betreff: Ausführen eines AutoIt-Skripts als lokaler Administrator?

Veröffentlicht: 15. Juni 2018 - 08:49 Uhr
von Jonattend
Danke für die Vorschläge.

Ich habe eine Idee, bin mir aber nicht sicher, ob sie mit WAPT umsetzbar ist:
– Stille Installation des Programms über WAPT (SYS-Konto)
– im WAPT-Paket: `def install()`: Erstellung eines interaktiven geplanten Tasks beim Anmelden des Administratorkontos
– in diesem Task: Öffnen der AutoIt-Datei, Starten des Programms + Tastatursimulation
– anschließend in AutoIt: Löschen des geplanten Administrator-Tasks + Löschen der AutoIt-Datei selbst … + Neustart.

Wäre eine Sitzungseinrichtung vielleicht einfacher? (Ich habe die Sitzungseinrichtung noch nicht getestet.)

Was meinst du?

Betreff: Ausführen eines AutoIt-Skripts als lokaler Administrator?

Veröffentlicht: 15. Juni 2018 - 09:41 Uhr
von Jonattend
Ich habe gerade session_setup ausprobiert: Für meinen lokalen Administrator funktioniert es einwandfrei... aber das Problem ist, dass es auch für meine Domänenbenutzer ausgeführt wird.

Im Idealfall muss die Sitzungseinrichtung nur einmal vom Administrator gestartet werden, und das war's.

Das Dokument stellt eindeutig fest, dass "Die Sitzungseinrichtung für jedes Paket wird nur einmal pro Paket bzw. Paketversion und pro Benutzerprofil ausgeführt"...Ich muss einen Weg finden, session_setup zu deaktivieren, nachdem es vom Administrator gestartet wurde...".

Aktuell in meiner session_setup():

Code: Alle auswählen

run(r'....\fichier_autoIT_activation_logiciel)
Endziel: session_setup():

Code: Alle auswählen

run(r'....\fichier_autoIT_activation_logiciel)
"desactiver le session_setup"
"suppression du fichier fichier_autoIT_activation_logiciel"

Betreff: Ausführen eines AutoIt-Skripts als lokaler Administrator?

Veröffentlicht: 15. Juni 2018 - 11:13 Uhr
von Sfonteneau
Am einfachsten ist es, eine Bedingung in der Sitzungseinrichtung hinzuzufügen.

Code: Alle auswählen

if get_current_user() == u'Administrateur':
         run(r'....\fichier_autoIT_activation_logiciel)

Betreff: Ausführen eines AutoIt-Skripts als lokaler Administrator?

Veröffentlicht: 15. Juni 2018 - 16:51 Uhr
von Jonattend
Puh! Ich hab's endlich geschafft!

Danke für den Tipp zu session_setup und get_current_user() ;)

In meiner def install() installiere ich die Software.

In session_setup():

Code: Alle auswählen

if get_current_user() == u'Administrateur':
         run(r'....\fichier_autoIT_activation_logiciel)
         delete_ay_next_reboot("C:\xxxxx\fichier_autoIT_activation_logiciel")
Ich habe aus all dem eine ganze Menge gelernt :)
Ich habe ein zweites Softwareprogramm vom gleichen Typ, ich werde es damit noch einmal versuchen und sehen, was dabei herauskommt.

Gelöst!