AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein seltsamer Fehler mit den Admin-Rechten ...
Thema durchsuchen
Ansicht
Themen-Optionen

seltsamer Fehler mit den Admin-Rechten ...

Ein Thema von paule32.jk · begonnen am 14. Sep 2023 · letzter Beitrag vom 14. Sep 2023
Antwort Antwort
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#1

seltsamer Fehler mit den Admin-Rechten ...

  Alt 14. Sep 2023, 17:03
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:
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;
Leider gibt es bei mir ein das Problem, das eine IF-Abfrage wohl überfordert ist:
Delphi-Quellcode:
    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.
mach da was falsch?
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: seltsamer Fehler mit den Admin-Rechten ...

  Alt 14. Sep 2023, 18:43
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:
if I = mrNo then
Jemand drückt aber nicht zufällig auf [X] oder nutzt [ESC] ?

mrCancel (oder war's mrAbort)


Zitat:
Delphi-Quellcode:
        SplashForm.Close;
      end;
    end;
showmessage('uuuu'); // hier wird kein Dialog angezeigt.
Vor dem .Close noch ein .Hide oder besser gleich direkt ein .Free.

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.
[edit] Gehen die Forms auch so zu, selbst wenn "diese" Close nicht ausgeführt werden? [/edit]
$2B or not $2B

Geändert von himitsu (14. Sep 2023 um 18:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: seltsamer Fehler mit den Admin-Rechten ...

  Alt 14. Sep 2023, 19:20
Also .... dein Dialog wird (bestimmt) angezeigt, für paar Millisekunden.
[edit] Gehen die Forms auch so zu, selbst wenn "diese" Close nicht ausgeführt werden? [/edit]
ja, genau.
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 ...
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: seltsamer Fehler mit den Admin-Rechten ...

  Alt 14. Sep 2023, 20:48
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)
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 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