Scheint wohl nicht so einfach zu sein.
Ich habe jedenfalls was gefunden, um zu prüfen ob die Anwendung mit Admin Rechten läuft oder nicht
Code:
procedure TForm.Button1Click(Sender: TObject);
type
TIsUserAnAdminFunc = function (): BOOL; stdcall;
var
Shell32DLL: THandle;
IsUserAnAdminFunc: TIsUserAnAdminFunc;
begin
Shell32DLL := LoadLibrary('shell32.dll');
try
if Shell32DLL <> 0 then
begin
@IsUserAnAdminFunc := GetProcAddress(Shell32DLL, 'IsUserAnAdmin');
if Assigned(@IsUserAnAdminFunc) then
if IsUserAnAdminFunc then
ShowMessage('Sie haben Adminrechte.')
else ShowMessage('Keine Adminrechte.')
end;
finally
FreeLibrary(Shell32DLL);
end;
end;
Das ist ja schon mal was. Vielleicht für den einen oder anderen auch brauchbar. So kann ich dann in meinem Fall bei "System Volume Information" oder auch bei anderen Ordnern die Error 5 (im Admin Modus) zurück liefern, dem Benutzer nur ne Info geben (Zugriff verweigert) und nicht die Frage "Anwendung mit Admin-Rechten neu starten?" hinterlassen. Die Frage "Anwendung mit Admin-Rechten neu starten?" halt nur beim ersten Mal, wenn die Anwendung noch nicht mit Admin-Rechten läuft. Wäre dann zwar 1x überflüssig aber im nachhinein dann wenigstens zu unterscheiden.
@KodeZwerg Die Frage ist eigentlich "Also bevor ich die Anwendung mit Adminrechten neu starte, möcht ich wissen ob ein Ordner weiterhin 5 zurück gibt." Wie "Delphi.Narium" schon schrieb "Die Rechtevergabe der Ordner unterscheidet sich voneinander." Danke für die Links @Delphi.Narium. Da muss ich noch mal genau schauen.
Micha