Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   CreateProcess - Verwirrung bei Benutzerrechten (https://www.delphipraxis.net/164071-createprocess-verwirrung-bei-benutzerrechten.html)

DeddyH 27. Okt 2011 14:51

Betriebssystem: Win XP,Win 7

CreateProcess - Verwirrung bei Benutzerrechten
 
I am confused :shock:
Wir haben hier folgendes Szenario: ein von uns betreutes Programm wird aus einer Server-Freigabe heraus gestartet. Für bestimmte Funktionen startet es dann von sich aus weitere Programme (mit CreateProcess, dessen bin ich mir sicher), die sich ebenfalls in der Freigabe befinden. Die Pfade der Programme werden aus der lokalen Registry ausgelesen. Kurzes Beispiel:
\\Server\Freigabe\Verz1\Programm1.exe ruft \\Server\Freigabe\Verz2\Programm2.exe auf

Bei einem Kunden hatten wir dann folgende Situation:
- XP-Clients melden "Zugriff verweigert", manueller Programmstart über den Windows-Explorer funktioniert hingegen
- Win7-Client startet ohne Probleme

ShellExecute und CreateProcess verhalten sich wohl unterschiedlich im Bezug auf (vererbte) Rechte, also scheint die UAC da bei Bedarf nachzuhelfen (habe das aber nur kurz in einem MSDN-Artikel überflogen). OK, das ist einigermaßen verständlich und konnte durch ein kleines Testprogramm bestätigt werden.
Nun wird es aber richtig verrückt: mappt man die Freigaben auf Laufwerksbuchstaben und passt die Pfade in der Registry entsprechend an (also z.B. Z: statt \\Server\Freigabe), dann zicken auch die XP-Clients nicht mehr. Es gibt bestimmt eine logische Erklärung dafür, leider fällt mir persönlich keine ein.
Kann mich mal jemand erhellen?

himitsu 27. Okt 2011 16:25

AW: CreateProcess - Verwirrung bei Benutzerrechten
 
Wenn das Programm unter einem anderem Benutzer gestartet wird und die Freigabe bei diesem Benutzer nicht vorhanden ist, dann geht das natürlich nicht.

Hab hier selber das Problem mit einem Subst-Laufwerk, welches erstmal immer nur für den aktuellen Benutzer eingerichtet wird.
Will man nun eine datei/Programm als Administrator starten, wird es plötzlich nicht mehr gefunden (es geht erst, wenn man das SUBST ebenfalls als Admin aufgerufen hat)

Ich bin mir grade nicht sicher, aber Eines von Beiden (CreateProcess oder ShellExecute) startet die Programme mit den Rechten und den Environmentvariablen des eingeloggten Benutzers und das Andere erbt diese Dinge vom Aufrufer.

Es gibt ja noch wiedere Varianten
CreateProcess
CreateProcessAsUser
CreateProcessWithLogonW
CreateProcessWithTokenW (die nötigen Token könntest du ja vom eigenen Prozess nehmen)

Damit kannst du dann sicherstellen, daß das andere Programm mit den richtigen Informationen gestartet wird.

DeddyH 27. Okt 2011 16:33

AW: CreateProcess - Verwirrung bei Benutzerrechten
 
Das ist ja nicht mein Programm, ich habe keinen Einfluss auf den Source. Außerdem ist das Problem an sich ja bereits behoben und der erste Teil geklärt. Was mich verwirrt: wieso geht es mit dem UNC-Pfad nicht, mit dem gemappten Laufwerk aber schon? Die Rechte sollten ja wohl dieselben sein, sonst wäre das ja ein dicker Hund.

himitsu 27. Okt 2011 16:42

AW: CreateProcess - Verwirrung bei Benutzerrechten
 
Bei Win7 sind nunmal rechte nicht gleich rechte.

Selbst wenn du als Admin eingeloggt bist, werden die Programme (durch das UAC) erstmal mit eingeschränkten Rechten gestartet ... genau sowas kann auch passieren, wenn ein Programm ein Anderes startet.
Solange man also, beim Aufruf, nicht genau sagt, was man will, kann es sein, daß Windows es anders macht, als man erwartet hätte. :angle:

DeddyH 27. Okt 2011 16:46

AW: CreateProcess - Verwirrung bei Benutzerrechten
 
Du solltest meinen Ausgangspost mal sorgfältig lesen: Win7 macht keine Probleme, sondern XP :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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