maba90
Goto Top

Batch oder PS Skript startet Programm nur als Prozess ohne GUI

Wir haben eine Software im Einsatz welche auf den Clients für updates als admin gestartet werden muss.

Diese wollten wir mit Hilfe eines Batch bzw. PS Skript realisieren.

Das Skript kann unser Monitoring im systray zur manuellen Auswahl zur Verfügung stehen. Übers Monitoring ist auch direkt die die Zugangsdaten hinterlegt so dass nichts im. Skript steht.

Das Problem ist das die Software nur als Prozess gestartet wird ohne GUI, das reicht für Updates leider nicht aus.

Ist jemanden so ein Problem bekannt? Kennt jemand einen Trick?

Content-ID: 672543

Url: https://administrator.de/forum/batch-oder-ps-skript-startet-programm-nur-als-prozess-ohne-gui-672543.html

Ausgedruckt am: 21.04.2025 um 18:04 Uhr

DivideByZero
DivideByZero 19.04.2025 um 00:01:14 Uhr
Goto Top
Moin,

die Frage ist hier ein Klassiker, kommt regelmäßig und ist immer problematisch im Hinblick auf die Zugangsdaten.
Guter Ausgangspunkt der kürzliche Thread: Batch-Datei mit Admin-Rechten ausführen ohne das Passwort raus zu geben.

Gruß

DivideByZero
Maba90
Maba90 19.04.2025 um 00:04:03 Uhr
Goto Top
Ich glaube ich habe mich falsch ausgedrückt.

Das admin Passwort können wir über unser Monitoring mit geben.

Sodass kein Passwort angezeigt bzw Eingabe benötigt wird.

Das Problem ist nur das die Software nur als Prozess (im Taskmanager) auftaucht aber halt nicht die GUI wo man mann dann auf updaten klicken kann
DivideByZero
DivideByZero 19.04.2025 um 00:15:36 Uhr
Goto Top
Nein, Du hast Dich schon richtig ausgedrückt.
Wenn Du etwas "sehen" willst, dann muss der Prozess im laufenden Kontext des Users laufen. Und dann kommt eben das Passwort-Problem.
Maba90
Maba90 19.04.2025 um 00:22:56 Uhr
Goto Top
Genau aber da hilft leider der Beitrag nicht weiter.

Oder ich stehe komplett auf dem Schlauch
MirkoKR
MirkoKR 19.04.2025 um 06:45:56 Uhr
Goto Top
Moin.

Zitat von @Maba90:

Genau aber da hilft leider der Beitrag nicht weiter.

Oder ich stehe komplett auf dem Schlauch

Schätze, evtl. halb/halb.

Zu klären ist, was du mit "Monitoring" meinst?

Soll der Benutzer das als Admin-gestarte Update in der GUIbdurchführen? Dann gibt es das Passwort-Problem.

Oder wird mit dem Start des Scripts zigleich eine Rempte-Monitoring Tool gestartet, sprich ein berechtigter Admin führt das Update aus?

Dann muss er das im Admin-Kontext als "interaktiv" gestartete Programm mit Admin-Passwort bestätigen.
BiberMan
BiberMan 19.04.2025 aktualisiert um 07:21:25 Uhr
Goto Top
Stichwort Impersonation, damit holt man sich das Anmelde-Token des aktuellen Users und kann so dem User aus dem privilegierten Prozess heraus eine GUI präsentieren:
Powershell: Aufgabe im Hintergrund MsgBox in Vordergrund
Alternativ einen priv. Service etablieren der mit einer separaten GUI kommuniziert, z.B. über Pipes.
Oder nen priv. Tasktrigger der auf einen vom User ausgelösten Event im Eventlog reagiert...
Gibt es also diverse Möglichkeiten das zu gestalten .... 🖖🐇
Maba90
Maba90 19.04.2025 um 08:09:42 Uhr
Goto Top
Man kann mit Hilfe unseres Monitoring Programm sagen das das Skript

-als angemeldete Benutzer
- admin
-System ausgeführt wird

Sagt man als angemeldeter Benutzer startet das Programm normal mit GUI allerdings geht kein Update da zu wenig Rechte

Sagt man als admin oder System startet das nur der Prozess
CamelCase
CamelCase 19.04.2025 aktualisiert um 08:17:07 Uhr
Goto Top
Zitat von @Maba90:

Man kann mit Hilfe unseres Monitoring Programm sagen das das Skript

-als angemeldete Benutzer
- admin
-System ausgeführt wird

Sagt man als angemeldeter Benutzer startet das Programm normal mit GUI allerdings geht kein Update da zu wenig Rechte

Sagt man als admin oder System startet das nur der Prozess

Moin,

Das ist normal, da weder der System-Account noch der andere Admin-Account Zugriff auf die Desktopsitzung haben.
Folge dem Rat/Link von Biberman, oder verwende Tools dafür wie ServiceUI.exe (google)
Maba90
Maba90 19.04.2025 um 08:18:37 Uhr
Goto Top
Es muss die GUI von der Software in den Vordergrund kommen da dort der Button Update ja oder nein erscheint.

Cmd Box bringt uns nichts
CamelCase
CamelCase 19.04.2025 um 08:19:36 Uhr
Goto Top
Zitat von @Maba90:

Es muss die GUI von der Software in den Vordergrund kommen da dort der Button Update ja oder nein erscheint.

Cmd Box bringt uns nichts

Dann starte die Software mit o.g. Methoden?
BiberMan
BiberMan 19.04.2025 aktualisiert um 08:22:17 Uhr
Goto Top
Zitat von @Maba90:

Es muss die GUI von der Software in den Vordergrund kommen da dort der Button Update ja oder nein erscheint.

Cmd Box bringt uns nichts

Oh Mann, die MsgBox war doch nur ein "Beispiel" für die Verwendung... Du kannst damit ganz unten im Skript an Prozessen einbauen was du willst.
Maba90
Maba90 19.04.2025 um 08:30:01 Uhr
Goto Top
Sorry für euch ist das vlt selbsterklärend weil ihr das schon 100 mal gemacht habt. Für mich ist es leider komplett Neuland auf diesem Weg...

Das Skript ist leider alles andere als selbsterklärend, daher auch die Nachfragen.
CamelCase
CamelCase 19.04.2025 um 08:35:01 Uhr
Goto Top
Nimm das Skript von Biberman und ersetze in der letzten Zeile

[Runasuser.ProcessExtensions]::StartProcessAsCurrentUser("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"," -EP Bypass -C `"Add-Type -A System.Windows.Forms;[System.Windows.Forms.MessageBox]::Show('Das ist eine Nachricht!','Benachrichtigung',0,64)`"","C:\windows",$false)    

mit dem Program, welches du starten willst, z.B: notepad

[Runasuser.ProcessExtensions]::StartProcessAsCurrentUser("C:\Windows\System32\notepad.exe", "", "C:\Windows\System32\",$true)    

Die 4 Parameter sind

Pfad der Exe
Parameter für die exe
Ausführen in welchem Ordner
Sichtbar oder nicht
CamelCase
CamelCase 19.04.2025 aktualisiert um 08:48:02 Uhr
Goto Top
Mir fällt gerade auf, du willst ja nicht nur etwas dem User anzeigen, das Programm benötigt auch entsprechende Rechte zum updaten. das wird mMn. mit diesem Skript auch nicht funktionieren...

Um welche Software handelt es sich? Öffentlich zugängliche?
Maba90
Maba90 19.04.2025 um 08:59:22 Uhr
Goto Top
Genau das ist das was ich die ganze zeit meine, es muss die Möglichkeit bestehen das der user die Aktion (Button ja jetzt updaten) drücken kann und das update durch geführt wird.

Die Software als Demo kann genutzt werden, ich kann dir eine älteren exe zukommen lassen, die geupdatet werden kann m. Zum. Download steht immer nur die neueste zur Verfügung
BiberMan
BiberMan 19.04.2025 aktualisiert um 09:14:34 Uhr
Goto Top
Zitat von @Maba90:

Genau das ist das was ich die ganze zeit meine, es muss die Möglichkeit bestehen das der user die Aktion (Button ja jetzt updaten) drücken kann und das update durch geführt wird.

Das wäre ja eine Sicherheitslücke sonders gleichen wenn ein normaler unprivilegierter User eine elevierte UI benutzen dürfte, daraus könnte er ja ausbrechen und andere privilegierte Prozesse starten. Das geht so nicht, die GUI muss mit einem anderen privilegierten Prozess kommunizieren (Dienst/Task), oder sie muss die UAC triggern damit man sich als Admin ausgeben und den Prozess elevierte ausführen kann.

Um welches Programm geht es denn überhaupt?
CamelCase
CamelCase 19.04.2025 um 09:09:19 Uhr
Goto Top
Die Software als Demo kann genutzt werden, ich kann dir eine älteren exe zukommen lassen
Mach das bitte mal. Am besten als Link per DM
BiberMan
BiberMan 19.04.2025 aktualisiert um 09:20:17 Uhr
Goto Top
Wieso überhaupt ne GUI? Nur um nen Button zu drücken? Gibt es für die so geheime Software keine Silent-Schalter oder Updatepakete für ein Silent-Update? Dann muss der User da nämlich gar nichts mehr drücken.
CamelCase
CamelCase 19.04.2025 aktualisiert um 09:21:10 Uhr
Goto Top
Zitat von @BiberMan:

Wieso überhaupt ne GUI? Nur um nen Button zu drücken? Gibt es für die so geheime Software keine Silent-Schalter oder Updatepakete für ein Silent-Update? Dann muss der User da gar nichts mehr machen.

Das interessiert mich auch. Vermute ein XY-Problem. Alternativ schlechte Software..
Maba90
Maba90 19.04.2025 um 10:41:02 Uhr
Goto Top
Nein, die Software hat natürlich auch eine GUI, nur wenn ein Update zur Verfügung steht hast du zustäzlich nach dem Start die Auswahl. "Update jetzt installieren" oder "Update später installieren"

und sobald man "Update jetzt installieren" klickt, werden die Admindaten benötigt, diese hat natürlich der User nicht.
und mit einem Skript wollten wir das gerne so automatisieren, dass der User die Updates für diese Software selber machen kann ohne das wir uns jedes mal dazu schalten müssen.
Maba90
Maba90 19.04.2025 um 10:42:22 Uhr
Goto Top
Link ist per DM raus.
BiberMan
BiberMan 19.04.2025 aktualisiert um 10:50:38 Uhr
Goto Top
Die Software wird ja irgendwo nach Updates fragen, z.B. per Webrequest. Das kann man ja einfach mal mitschneiden und sich das Update selbst ziehen und dann per Task/Script installieren lassen, dann wird der User auch nicht mehr behelligt. Sowas lässt sich nat. auch noch automatisieren/scripten.

Ist die Software-Titel/Hersteller so ein Geheimnis?? Vielleicht haben wir oder andere ja schon selbiges fertig als Lösung parat, soll ja sicher noch andere geben die sowas brauchen.
CamelCase
CamelCase 19.04.2025 aktualisiert um 11:09:32 Uhr
Goto Top
Zitat von @Maba90:

Link ist per DM raus.

Okay, starte die Installation als SYSTEM mit den Parameter "/VERYSILENT /SUPPRESSMSGBOXES"

Prüfe dann den ExitCode. Wenn dieser 0 ist, war das Update erfolgreich.

Das führt ein Update durch ohne den Nutzer zu behelligen. Unter Umständen musst du das Programm vorher mit
taskkill /f /im ProzessName
beenden. Musst du mal testen.

Wie habe ich das rausgefunden? Starte das Programm von einem Terminal mit dem Parameter /?

clipboard-image
Maba90
Maba90 19.04.2025 um 11:11:13 Uhr
Goto Top
Ja die Grundinstallation ist nicht das Problem, das Problem ist ja sobald du jetzt auf die neuere Version updaten willst.

Dann startet wie gesgat nur de Prozess und nichts passiert.

User startet die Software per doppelklick es kommt die Meldung das ein Update zur Verfügung steht.

Klickt er auf ja kommt die Abfrage nach Update Daten.


Geplante Vorgehens.
User öffnet Software, es kommt die Update Meldung.
Er schließt die Software, klickt ins systray dort ist ein Skript im Monitoring Tool verbaut

Das führt er aus.
Das Skript killt alle Prozesse der Software und startet die Software als. Admin, so dass die Software geupdatet werden kann
Maba90
Maba90 19.04.2025 um 11:12:57 Uhr
Goto Top
Nein ist kein Geheimnis, ging unter dadurch, dass ich den link per DM geschickt habe.

Fireplan

Die aktuelle Version kann manuell vom Hersteller runtergeladen werden und installiert werden
BiberMan
BiberMan 19.04.2025 aktualisiert um 11:15:27 Uhr
Goto Top
Die aktuelle Version kann manuell vom Hersteller runtergeladen werden und installiert werden
Und die MSI kannst du auch direkt mit silent Parametern anwerfen um das Prog zu aktualisieren.
Maba90
Maba90 19.04.2025 um 11:17:09 Uhr
Goto Top
dann muss ich jedesmal die exe entpacken um an die MSI zu bekommen.
CamelCase
CamelCase 19.04.2025 aktualisiert um 11:22:48 Uhr
Goto Top
Wenn du die setup.exe der neuen Version so ausführst wie oben beschrieben, wird das Programm ja geupdatet, ohne dass eine Interaktion des Nutzers nötig ist. Also passe dein vorhandenes Skript, welches du als Administrator oder SYSTEM ausführst, so an, dass es 1) "taskkill /f /im ProzessName.exe" und 2) "setup.exe /VERYSILENT /SUPPRESSMSGBOXES" ausführt.

Du musst dann halt wenn ein Update verfügbar ist, dieses herunterladen und für das Skript hinterlegen.

Das kann man auch automatisieren, indem man die Datei regelmäßig runterlädt, dan Hash mit der aktuell lagernden .exe vergleicht, und bei einer Abweichung automatisch austauscht. Würde ich allerdings nicht empfehlen, da du dir so direkt was einfängst, falls der Softwareanbieter gehackt wird und die .exe vom Angreifer modifiziert oder getauscht wird. Nennt sich supply chain attack, ist so unter Anderem bei Solarwinds schon passiert.
BiberMan
BiberMan 19.04.2025 aktualisiert um 11:21:32 Uhr
Goto Top
Zitat von @Maba90:

dann muss ich jedesmal die exe entpacken um an die MSI zu bekommen.
Die Exe hat doch die silent Parameter schon. 🤔.

Also echt jetzt, jetzt wird's peinlich.
CamelCase
CamelCase 19.04.2025 um 11:18:06 Uhr
Goto Top
Zitat von @Maba90:

dann muss ich jedesmal die exe entpacken um an die MSI zu bekommen.

Du kannst auch die EXE verwenden, da musst du nichts entpacken
CamelCase
CamelCase 19.04.2025 um 11:35:22 Uhr
Goto Top
Also echt jetzt, jetzt wird's peinlich.

Warum so herablassend? Standest du noch nie auf der Leitung? Schlecht geschlafen? face-smile
Heute ist endlich wieder schönes Wetter hier, und dann noch langes Wochenende. Da kann man doch ein bisschen positiver sein face-smile
Maba90
Maba90 19.04.2025 um 11:37:20 Uhr
Goto Top
Wenn ich jedesmal die Exe doch runterladen muss, dann haben ich leider nichts gewonnen.
Es geht darum, dass es User ohne Admin selber aktualisieren kann, sobald die neue Version zur Verfügung steht

Klar ich könnte jetzt ein Skript bauen.

Ist im Verzeichnis Temp die Setup.exe vorhanden dann lösche diese
Lade anschließend die neue Setup runter
Warte
kill den Prozess
führe die Setup aus mit deinen Paramtern von oben ...

Aber es muss doch einen einfachen weg geben, dass die Software als Admin gestartet werden kann und das normale Update durch läuft,

Wir haben leider an verschieden Standorten noch eine 2000 DSL da dauert der Download von der setup, und wenn es übers Programm läuft sieht der User wenigsten das etwas am laufen ist.
DivideByZero
DivideByZero 19.04.2025 um 15:04:41 Uhr
Goto Top
Wenn ich jedesmal die Exe doch runterladen muss, dann haben ich leider nichts gewonnen.
Doch, sogar eine Menge, denn Du musst sie ja nur 1x herunterladen, ab da übernimmt das Skript. Es entfallen also die Downloads an jeder Station (kannst Du ja verteilen lassen) sowie die von Euch - verständlicherweise - nicht mehr gewünschte manuelle Updateklickerei an jedem Client.

Es geht darum, dass es User ohne Admin selber aktualisieren kann, sobald die neue Version zur Verfügung steht
Geht ja auch, siehe eingangs verlinkter Thread, aber mit den Nachteilen, dass dann eben, egal, wie kunstvoll es "versteckt" ist, ein Elevation- und Passwort-Problem entsteht. Daher ist die von den Kollegen dargestellte Variante einer Silentinstallation natürlich deutlich eleganter und sicherer. Einen Kompromiss wirst Du schließen müssen.

Aber es muss doch einen einfachen weg geben, dass die Software als Admin gestartet werden kann und das normale Update durch läuft,
Das geht dann z.B. damit, wie in dem anderen Thread erwähnt. Wie gesagt, nicht empfehlenswert, wenn es andere Alternativen, wie hier, gibt.

Wir haben leider an verschieden Standorten noch eine 2000 DSL da dauert der Download von der setup, und wenn es übers Programm läuft sieht der User wenigsten das etwas am laufen ist.
Der User braucht doch keinen Fortschritt, wenn Du die Exe zentral verteilst und silent installiert. 🤔
Maba90
Maba90 19.04.2025 um 15:13:10 Uhr
Goto Top
Woher weiß dann der User das es fertig ist?
Das ist das Problem bei der 2000er Leitung dauert es manchmal. Schon 15 min, und du weißt wie ungeduldig user sind dann wird immer wieder drauf geklickt
DivideByZero
DivideByZero 19.04.2025 um 15:18:55 Uhr
Goto Top
Wie wäre es damit, so etwas einfach außerhalb der Arbeitszeiten zu erledigen (Update herunterladen, nachts skriptgesteuer installieren, da ist auch eine 2000er Leitung wumpe)? Löst dann auch gleich das Dilemma, dass der User überhaupt warten muss. Wäre also best practice.
Maba90
Maba90 19.04.2025 um 15:43:45 Uhr
Goto Top
Dann kommt aber wieder das Problem dazu, dass man doch händisch was auslösen muss wenn es Updates gibt, und es sind teilweise standalone Laptops wo nur an sind wenn der user was arbeitet.
DivideByZero
DivideByZero 19.04.2025 um 16:03:38 Uhr
Goto Top
Ich möchte Dir nicht zu nahe treten, aber das klingt nach einem: ich will es aber nicht.
Natürlich ist dann 1x händisch etwas zu tun, aber dafür entfallen 99% der Schritte.
Und Laptops: die haben ja sowieso das Problem, dass sie dann, wenn sie irgendwann mal wieder an sind, wohl erst einmal etliche Windowsupdates starten wollen. Da muss der User dann halt warten, bei denen käme das Updateskript halt per GPO zum Login.
Alternative habe ich Dir auch aufgezeigt, wird halt mit weniger Sicherheit erkauft.