![]() |
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 |
Re: Adminrechte anfordern
Du kannst dich zB mit runas neu starten.
PS: In Daniels Videos wird das erklärt ;) |
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 ![]() |
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 |
Re: Adminrechte anfordern
Lasse deine Anwendung sich selbst starten mit ein paar Spezialparametern. Mein
![]() |
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 |
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. |
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 |
Re: Adminrechte anfordern
Zitat:
![]() ![]() |
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.
|
Re: Adminrechte anfordern
Nicht unter dem gleichen Benutzer, das ist richtig.
|
Re: Adminrechte anfordern
Zitat:
|
Re: Adminrechte anfordern
So ich habe mich nochmal damit auseinander gesetzt und möchte das nun so machen:
Meine Frage ist nun: Wie kann ich herausfinden, ob ich in den Ordner kopieren kann. Am besten mit Abwärtskompatibilität. MfG xZise |
Re: Adminrechte anfordern
Du kannst versuchen darin eine Datei zu erstellen oder du verwendest AccessCheck .
|
Re: Adminrechte anfordern
Hi Dezipaitor,
Zitat:
Zitat:
MfG xZise |
Re: Adminrechte anfordern
Wenn du ein Manifest verwendest, dann wird der Ordner sicher nicht virtualisiert. Zudem gibt es im Token eine Info, ob Virtualisierung an ist. (TJwSecurityToken.VirtualizationEnabled)
In der JWSCL gibt es sowas schon: (ist aus dem ReadFileSecurity Beispiel) ![]() |
Re: Adminrechte anfordern
Zitat:
|
Re: Adminrechte anfordern
Wenn das Manifest requireAdministrator enthätl, kann man die Anwendung nicht mit CreateProcess aufrufen, sondern nur mit ShellExecute. Dann kommt der UAC Dialog.
|
Re: Adminrechte anfordern
Bei mir soll das Hauptteil warten, bis Admin-Teil fertig ist und dann weiter arbeiten. Mit ShellExecute wird das etwas komplizierter.
Gibt es irgendwelche Parameter, mit den man ein Programm mit Adminrechten starten kann, ohne ein Manifest erstellne zu müssen? |
Re: Adminrechte anfordern
jo : ShellExecute
ShellExecuteEx gibt dir ein Prozesshandle zurück. Da kann man drauf warten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 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