Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi ShellExecute ohne erweiterte Rechte (https://www.delphipraxis.net/211341-shellexecute-ohne-erweiterte-rechte.html)

sjansen 1. Sep 2022 12:43

ShellExecute ohne erweiterte Rechte
 
Hi,
ich habe folgendes Problem:
- ich starte einen Updater, welcher erweiterte Rechte erfordert, da er auch in %programfiles% schreibt
-> aufruf via ShellExecute mit 'runas'
-> Der Benutzer hat keine Adminberechtigungen -> es kommt die UAC-Credential-Aufforderung von Windows
- der Admin gibt die Credentials ein
- Updater beendet die Hauptanwendung, Update wird durchgeführt und soll nach fertigstellung die zuvor gestartete Hauptentwendung wieder starten
- Die Anwendung wird im Benutzerkontext des Admins gestartet

Jemand eine Idee wie ich die Anwendung im vorherigen Benutzerkontext starten kann?

freimatz 1. Sep 2022 12:58

AW: ShellExecute ohne erweiterte Rechte
 
Statt:
- ich starte einen Updater, welcher erweiterte Rechte erfordert
Besser:
- ich starte einen Updater, welcher keine erweiterte Rechte erfordert
- dieser Updater startet einen Updater, welcher erweiterte Rechte erfordert
(Bei mir sind beide Updater die selbe exe)

Achim Kalwa 1. Sep 2022 19:02

AW: ShellExecute ohne erweiterte Rechte
 
Zitat:

Zitat von sjansen (Beitrag 1511092)
Hi,
Jemand eine Idee wie ich die Anwendung im vorherigen Benutzerkontext starten kann?

Ich habe vor langer Zeit mal dies hier gefunden:
ShellExecuteUnelevated
(der Code ist nicht von mir).

TurboMagic 1. Sep 2022 21:35

AW: ShellExecute ohne erweiterte Rechte
 
Zitat:

Zitat von freimatz (Beitrag 1511096)
Statt:
- ich starte einen Updater, welcher erweiterte Rechte erfordert
Besser:
- ich starte einen Updater, welcher keine erweiterte Rechte erfordert
- dieser Updater startet einen Updater, welcher erweiterte Rechte erfordert
(Bei mir sind beide Updater die selbe exe)

Ich vermute dass dein Updater 1 der ja noch unelevated ist nach Ausführen des Updater 2 dann
das installierte Programm starten soll?

jaenicke 1. Sep 2022 21:47

AW: ShellExecute ohne erweiterte Rechte
 
Ich hatte mal ein solches Projekt angefangen, aber nicht fortgesetzt. Grundsätzlich klappte es damals aber:
https://www.delphipraxis.net/139102-...-projekte.html
Heute würde ich das sicher nicht mehr so schreiben, aber das kennt vermutlich jeder Entwickler... :wink:

Die grundlegende Idee ist, dass man eine Instanz ohne Adminrechte weiter laufen lässt während das Update läuft, und diese Instanz dann eine neue Version von sich selbst ebenfalls ohne Adminrechte startet. Sie bleibt ja im zuvor verwendeten Benutzerkontext. Dafür müssen die Exen natürlich untereinander kommunizieren.

freimatz 2. Sep 2022 12:59

AW: ShellExecute ohne erweiterte Rechte
 
Zitat:

Zitat von TurboMagic (Beitrag 1511113)
Zitat:

Zitat von freimatz (Beitrag 1511096)
Statt:
- ich starte einen Updater, welcher erweiterte Rechte erfordert
Besser:
- ich starte einen Updater, welcher keine erweiterte Rechte erfordert
- dieser Updater startet einen Updater, welcher erweiterte Rechte erfordert
(Bei mir sind beide Updater die selbe exe)

Ich vermute dass dein Updater 1 der ja noch unelevated ist nach Ausführen des Updater 2 dann
das installierte Programm starten soll?

Ja, genau

THY4243 2. Sep 2022 13:32

AW: ShellExecute ohne erweiterte Rechte
 
Es gab da mal so eine ähnliche Frage: https://www.delphipraxis.net/182440-...-rechte-2.html

sjansen 8. Sep 2022 12:59

AW: ShellExecute ohne erweiterte Rechte
 
Zitat:

Zitat von Achim Kalwa (Beitrag 1511109)
Zitat:

Zitat von sjansen (Beitrag 1511092)
Hi,
Jemand eine Idee wie ich die Anwendung im vorherigen Benutzerkontext starten kann?

Ich habe vor langer Zeit mal dies hier gefunden:
ShellExecuteUnelevated
(der Code ist nicht von mir).

Danke euch!
hab diese Lösung genutzt und sie reicht für meine Zwecke. So muss ich die Anwendung nicht groß umbauen.

Lg


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz