Entwickler-Ecke

Windows API - Rechte prüfen


Boldar - Do 14.01.10 23:14
Titel: Rechte prüfen
Hallo,
wie prüft man, welche Rechte xy.exe gerade hat?
Kann ich das Beispiel hier:
http://www.delphi-treff.de/tipps/system/wiki/Auf%20Administratorrechte%20pr%C3%BCfen/
dafür abändern, indem ich einfach GetcurrentThread und GetCurrentProcess durch die Handles für den Zielprozess ersetze?
mfg Boldar


BenBE - Fr 15.01.10 00:45

Aufpassen: Prozess-Handle und Prozess-ID sind was unterschiedliches. Wenn du also die Prozess- und Thread-IDs hast ja; mit den Handles müsstest du erst schauen; wobei dann mehr oder weniger die OpenProcess-Aufrufe hinfällig werden.


jaenicke - Fr 15.01.10 07:30

Wobei ich nicht sicher bin, dass dieser Quelltext ab Vista mit UAC noch funktioniert. Denn da gibt es ja zwei Token, einmal mit Adminrechten und einmal ohne. Und ich glaube da bin ich genau darüber gestolpert, dass ich über die normale SID-Auswertung nicht weitergekommen bin.

Es gibt aber die Funktion CheckTokenMembership [http://msdn.microsoft.com/en-us/library/aa376389.aspx], die eine SID entsprechend prüft. Das Token muss natürlich das des entsprechenden Prozesses sein.

Ich glaube aber, dass du selbst Adminrechte brauchen wirst, damit du die entsprechenden Rechte für den Zugriff auf den anderen Prozess hast (wenn dieser als Admin läuft). Sonst wirst du das Token nicht abfragen können.


Boldar - Fr 15.01.10 16:25

Ich will das nur in xp ausführen.
Geht das denn unter xp, wenn man selbst nicht admin ist?


jaenicke - Fr 15.01.10 20:21

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Geht das denn unter xp, wenn man selbst nicht admin ist?
Wenn es sich beim Zielprozess um keinen Adminprozess handelt, ja. Auf einen Adminprozess fehlen als Nichtadmin vermutlich Rechte, getestet habe ich jetzt nicht, ob man diese Privilegien dennoch bekommt.