AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Erweiterte Rechte für Programm anforden, während Laufzeit
Thema durchsuchen
Ansicht
Themen-Optionen

Erweiterte Rechte für Programm anforden, während Laufzeit

Ein Thema von lbccaleb · begonnen am 5. Mai 2010 · letzter Beitrag vom 6. Mai 2010
Antwort Antwort
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#1

Erweiterte Rechte für Programm anforden, während Laufzeit

  Alt 5. Mai 2010, 22:16
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
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#2

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit

  Alt 6. Mai 2010, 09:01
http://www.michael-puff.de/Developer...ersonate.shtml

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit

  Alt 6. Mai 2010, 09:08
Zitat von himitsu:
http://www.michael-puff.de/Developer/Delphi/Code-Snippets/Impersonate.shtml

Den Dialog mußt'e allerdings selber basteln.
Diese Lösung geht doch AFAIK nicht mehr wenn Vista/Win2008/Win7 im Einsatz ist und UAC aktiv ist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#4

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit

  Alt 6. Mai 2010, 09:16
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit

  Alt 6. Mai 2010, 09:35
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Erweiterte Rechte für Programm anforden, whrend Laufzeit

  Alt 6. Mai 2010, 09:45
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:

Bsp1 von VCL-Components
Bsp2 von http://freeweb.siol.net

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...
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Erweiterte Rechte für Programm anforden, während Laufzei

  Alt 6. Mai 2010, 10:39
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:
http://www.delphipraxis.net/internal....php?p=1071944
Dort starte ich die Exe selbst neu und kann so ohne zusätzliche externe Exe auch die Exe selbst aktualisieren (geht ab Windows 2000).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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