![]() |
Erweiterte Rechte für Programm anforden, während Laufzeit
Hallo,
wenn in Windows bestimmte Aktionen erweiterte Rechte brauchen, öffnet sich bei den Windowsprogrammen wie der Firewall oder dem Explorer ein Dialog, welches dem Programm zu erweiterten Rechten verhelfen soll. Gibt es eine möglichkeit, das ich diesen Dialog auch aus meinem Programm aufrufen kann, und Ihm dadurch erweiterte Windows Rechte geben kann wie z.B.: schreiben in den Programm ordner, oder dem selben Anwendungspfad? Bin für alle Tipps dankbar :) |
Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
![]() Den Dialog mußt'e allerdings selber basteln. Aber eigentlich wäre es wohl besser wenn du stattdessen eine weitere Anwendung mit Admin-Manifest beilegst, welche diese Änderungen vornimmt. |
Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
Zitat:
|
Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
Während der Laufzeit geht es nicht.
Du kannst allerdings mithilfe der Restart & Recovery API arbeiten: Anwendung speichert ihren Zustand in ein File und fragt via UAC nach Elevation. Wenn bestätigt wird ein neuer Prozess der Anwendung mit Adminrechten gestartet und die erste Instanz beendet. Die neue Instanz lädt dann den alten Zustand und läuft mit Adminrechten weiter. |
Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
Hallo,
gehn tut das schon, z.B. mit einem COM-Objekt (+COM elevation moniker). Das darf sich erweiterte Rechte "holen". Inwiefern der Aufwand gerechtefertigt ist, ist eine andere Frage. Das einfachste ist die externe App mit entsprechendem Manifest. Heiko |
Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit
Hy,
also gedacht ist das ganze für ein Automatisches Update Tool, welches ja nur erweiterte Rechte brauch, wenn der User das Programm in einen Ordner gepackt hat, welcher halt erweiterte Rechte braucht. Ich wollte diese also auch nur dann anfordern, wenn ich dort das Programm aktualisieren will, und aufgrund fehlender Rechte das nicht darf. Zu Com hatte ich da bereits bsp. gefunden: ![]() ![]() Aber wie schon erwähnt, scheint mir das doch so ein wenig sehr aufwendig zu sein, somal ich davon gar keine Ahnung hab oO Werde es dann mal so probieren wie es Phoenix vorgeschlagen hat. Wobei ich mir vorstellen könnte das Windows dazu noch irgendwas parat hat. Edit: Ach ja wollte da auch nicht so viel große extra Units einbauen, da das ein nonVCL updater ist... |
Re: Erweiterte Rechte für Programm anforden, während Laufzei
Du kannst dir ja meine Updater-Unit anschauen, der ist ganz klein und noch nicht ganz sauber programmiert (Fehlerbehandlung...), aber vielleicht gibt der dir ja Ideen:
![]() Dort starte ich die Exe selbst neu und kann so ohne zusätzliche externe Exe auch die Exe selbst aktualisieren (geht ab Windows 2000). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz