Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Adminrechte anfordern (https://www.delphipraxis.net/113712-adminrechte-anfordern.html)

xZise 13. Mai 2008 13:16


Adminrechte anfordern
 
Hallo DP,
ich programmiere gerade an Qd2.
Dort kann es nun mal vorkommen, dass man Adminrechte benötigt, um z.B. im Programmordner was downloadet (Stichwort Locomotion ;)).

Wie kann ich das nun erreichen?
Neustarten ist eigentlich nicht möglich, weil vom Anfang an nicht klar ist, ob ich Adminrechte benötige.

MfG
xZise

dominikkv 13. Mai 2008 13:23

Re: Adminrechte anfordern
 
Du kannst dich zB mit runas neu starten.
PS: In Daniels Videos wird das erklärt ;)

Daniel 13. Mai 2008 13:24

Re: Adminrechte anfordern
 
Nimm' Dir das Beispiel von sakura, in dem er einen sog. "Out of Process" Com-Server erzeugt. Deine eigene Anwendung kann zur Laufzeit die Rechte-Ebene nicht wechseln. Deswegen muss ein neuer Prozess gestartet werden, für den dann die gewünschten Rechte gefordert werden können.

Den genauen Link zu seinem Beispiel habe ich jetzt nicht zu Hand, aber unter http://www.gumpi.com/Blog/Special.aspx?=Conferences könntest Du in einem der Vista-Archive fündig werden.

xZise 13. Mai 2008 13:29

Re: Adminrechte anfordern
 
Okay, dass ist natürlich nicht so günstig, weil ich zur Lauzeit neustarten müsste, und im Ram alles Mögliche sein könnte.

Andere Möglichkeit: Wäre es vielleicht sinnvoll die Datei nachher zu verschieben, und das Verschieben mit Adminrechten zu machen? So ähnlich wie beim Verschieben von Dateien im Explorer?

MfG
xZise

Dezipaitor 13. Mai 2008 19:47

Re: Adminrechte anfordern
 
Lasse deine Anwendung sich selbst starten mit ein paar Spezialparametern. Mein RunAsSys macht es genauso. Dort geht es sogar soweit, dass sie sich selbst als Service kurzzeitig registriert. Benutzer -> Admin -> Dienst.

xZise 13. Mai 2008 19:58

Re: Adminrechte anfordern
 
Spezialparameter?
Ich müsste eine ganze Objektliste übergeben.
Das hieße ungefähr 7 Eigenschaften pro Objekt, was bei vielleicht 20 schon 140 Parameter ausmacht.

Ist es da nicht wesentlich einfacher, zu überprüfen, ob ich in den Ordner schreiben kann, und andernfalls eine "Dateioperation" in Gang setze, welche das dann kopiert?

MfG
xZise

Dezipaitor 13. Mai 2008 20:04

Re: Adminrechte anfordern
 
Das ist doch dasselbe.
Du erstellst eine Datei in einem Tempordner. Dann rufst du dein Programm auf, welches zum Admin wird und diese Datei dorthin kopiert, wohin du es haben willst. Das ist eben eine andere Art der Interprozesskommunikation. Du könntest natürlich auch Pipes oder MMF verwenden. Objekte zu transferieren geht eigentlich am leichtesten über Serialisierung.

xZise 13. Mai 2008 20:43

Re: Adminrechte anfordern
 
Okay, also du meinst, ich schreibe ein Art "Copy.exe", welche mir eine Datei kopiert? So könnte es gehen.

MfG
xZise

Luckie 14. Mai 2008 08:01

Re: Adminrechte anfordern
 
Zitat:

Zitat von Daniel
Deine eigene Anwendung kann zur Laufzeit die Rechte-Ebene nicht wechseln.

Das stimmt so nicht. Mit MSDN-Library durchsuchenImpersonateLoggedOnUser geht es. Siehe dazu auch meinen Artikel: http://www.michael-puff.de/Artikel/Impersonate.php

Daniel 14. Mai 2008 08:42

Re: Adminrechte anfordern
 
Du kannst einen neuen Prozess starten, der dann beliebige Rechte hat, aber wenn ein Prozess einmal läuft, kann dieser nicht in der Rechte-Hierarchie von Vista auf- oder absteigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 1 von 2  1 2      

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