![]() |
seltsamer Fehler mit den Admin-Rechten ...
Hallo
ich habe ein Problem bei der Überprüfung eines Windows-Kontos. Dabei soll geprüft werden, ob der angemeldete Benutzer zu der Liste der Administratoren bzw. selbst Administrator ist. Ich verwende dazu folgenden Code:
Delphi-Quellcode:
Leider gibt es bei mir ein das Problem, das eine IF-Abfrage wohl überfordert ist:
function IsAdmin: Boolean;
const DOMAIN_ALIAS_RID_ADMINS = $00000220; SECURITY_BUILTIN_DOMAIN_RID = $00000020; SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)); var Admin: Boolean; AdmGroup: PSID; begin Admin := AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, AdmGroup); if (Admin) then begin If (not CheckTokenMembership(0, AdmGroup, Admin)) then Admin := False; FreeSid(AdmGroup); end; Result := Admin; end;
Delphi-Quellcode:
mach da was falsch?
if not(isAdmin) then
begin showmessage('1111'); // dieser Dialog wird angezeigt I := MessageDlg(rs_App_User_Mode, mtWarning,[mbYes, mbNo],0); if I = mrNo then begin showmessage('ooooo'); // dieser Dialog wird nicht angezeigt FreeBDESetup; Form1.Close; SplashForm.ProgressBar1.Position := 70; SplashForm.isExit := true; SplashForm.isMemE := true; SplashForm.Close; end; end; showmessage('uuuu'); // hier wird kein Dialog angezeigt. |
AW: seltsamer Fehler mit den Admin-Rechten ...
Man prüft nicht auf Admin, sondern auf das Recht, was man benötigt.
Es ist vollkommen egal, ob der aktuelle Nutzer ein Administrator ist. * er kann dennoch das nötige Recht nicht besitzen (ja, man kann einem/allen Admin sämtliche Rechte entziehen, so dass er am Ende weniger darf, als ein popeliger User) * und selbst wenn er das Recht hätte, muß es nicht sein, dass er es auch "jetzt" aktiv hat (zu Recht werden Admins standardmäßig nicht mit allen Rechen eingeloggt -> UAC-Restrictions) Du weißt was ein Debugger ist? Zitat:
mrCancel (oder war's mrAbort) Zitat:
Close schließ nicht sofort, somit ist beim ShowMessage die Form1+SlashForm noch da, wird kurz danach geschlossen. VCL-Dialoge hängen sich an die ActiveForm (deine Form1 bzw. SplashForm) und wird diese freigegeben/geschlossen, dann gehen sie ebenfalls sofort wieder zu. Also .... dein Dialog wird (bestimmt) angezeigt, für paar Millisekunden. :angle2: [edit] Gehen die Forms auch so zu, selbst wenn "diese" Close nicht ausgeführt werden? [/edit] |
AW: seltsamer Fehler mit den Admin-Rechten ...
Zitat:
Dann war noch eine Objektleiche enthalten, die ich zwar gelöscht, aber noch im DFM auffindbar war - ich weiß jetzt nicht, warum Delphi sowas nicht von selbst lösen kann, falls man ein private Object löscht. - wird doch auch fast alles gelöscht, wenn man das Objekt von der TForm lößt. Mit etlichen Beeps läuft die alte D7 Anwendung wieder. - gibt wieder Paar Tage, das alles zu beheben ... |
AW: seltsamer Fehler mit den Admin-Rechten ...
Genau andersrum.
In der Form gelöscht, wird die gleichnamige Variable mit entfernt. Und es muß keine Variable für ein Objekt geben. Gibt es eine Published-Variable im Owner, dann wird beim Erstellen jene Variable gesetzt und beim Freigeben auf NIL gesetzt. (das machen alle TComponent-Nachfahren) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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