Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi UAC Rechte werden nicht gewährt, Programm soll reagieren (https://www.delphipraxis.net/125130-uac-rechte-werden-nicht-gewaehrt-programm-soll-reagieren.html)

richard_boderich 1. Dez 2008 09:57


UAC Rechte werden nicht gewährt, Programm soll reagieren
 
Moin Leute!

Mein Programm benötigt Admin Rechte und fordert die unter Vista auch via UAC an.
Wenn diese Rechte jedoch nicht gewährt werden, öffnet sich die Anwendung trotzdem und gibt
nette Fehlermeldungen aus bzw. funktioniert nicht richtig/nur eingeschränkt.

Ich würde also gern auf die Administrator Rechte meiner laufenden Anwendung nach der
UAC Abfrage prüfen und mit einer entsprechenden Meldung reagieren. Nach meiner
Recherche via Goggle scheint IsAdmin ja nicht zu funktionieren. Hat jemand eine alternative
dafür?

nicodex 1. Dez 2008 10:53

Re: UAC Rechte werden nicht gewährt, Programm soll reagieren
 
Zitat:

Zitat von richard_boderich
Nach meiner Recherche via Goggle scheint IsAdmin ja nicht zu funktionieren.

Sie funktioniert schon, wenn sie richtig programmiert wurde ;)
In älteren Version wurde oft vergessen zu prüfen, ob die im Token gefundene Admin-SID überhaupt aktiv ist (dieses Feature gibt es schon seit Ewigkeiten - wurde vor Windows XP aber nur selten verwendet).

Sieh dir mal diesen Thread an:
http://www.delphipraxis.net/internal...t.php?t=111077

richard_boderich 1. Dez 2008 11:20

Re: UAC Rechte werden nicht gewährt, Programm soll reagieren
 
@Nico

Danke für deinen Link. Ich hätte zu deiner Unit mal ein paar Fragen wenn du gestattest? :)

1. Was ist der Unterschied der beiden Funktionen

function CheckTokenMembership(TokenHandle: THandle; SidToCheck: PSID; out IsMember: BOOL): BOOL; stdcall;

function SHTestTokenMembership(hToken: THandle; ulRID: ULONG): BOOL; stdcall;

Wenn ich das Recht verstehe, ist das eigentlich das selbe nur einmal über die SecurityAPI und einmal über die ShellAPI.
Warum verwendest du diese Zwei Unterschiedlichen Funktionen?

2. Kann ich deine Unit ohne Einschränkungen in meinen Projecten verwenden?

nicodex 1. Dez 2008 11:28

Re: UAC Rechte werden nicht gewährt, Programm soll reagieren
 
Zitat:

Zitat von richard_boderich
1. Was ist der Unterschied der beiden Funktionen

Es handelt sich in allen drei Fällen um dokumentierte API-Funktionen, die erst in "späteren" Windows-Versionen eingeführt wurden.
Die Wrapper-Funktionen rufen entweder die Originalfunktion auf (falls vorhanden) oder emulieren diese (entspricht so ziemlich einer 1:1-Implementation der Originalfunktion).
IsUserAnAdmin verwendet intern SHTestTokenMembership, welche intern CheckTokenMembership verwendet.

Zitat:

Zitat von richard_boderich
2. Kann ich deine Unit ohne Einschränkungen in meinen Projecten verwenden?

Der Quellcode ist gemeinfrei.

richard_boderich 1. Dez 2008 11:34

Re: UAC Rechte werden nicht gewährt, Programm soll reagieren
 
Ok, Hab Dank für deine Antwort Nico. :)


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