Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Arbeitet der User mit eingeschr. Rechten? (https://www.delphipraxis.net/85991-arbeitet-der-user-mit-eingeschr-rechten.html)

snapman 7. Feb 2007 15:19


Arbeitet der User mit eingeschr. Rechten?
 
Hallo,

kann man irgendwie ermitteln ob der Nutzer mit eingeschr. Rechten arbeitet, ohne das irgendeine Fehlermeldung aufpoppt?

Luckie 7. Feb 2007 17:42

Re: Arbeitet der User mit eingeschr. Rechten?
 
Ermittele, ob er Administrator ist. Ist er es nicht, verfügt er nur über eingeschränkte Rechte. Zum Ermitteln, ob er Administrator ist, gibt es hier im Forum genug Code.

snapman 7. Feb 2007 17:47

Re: Arbeitet der User mit eingeschr. Rechten?
 
Delphi-Quellcode:
var
f:textfile;
begin
assignfile(f,'C:\windows\abc.txt');
try begin rewrite(f);
writeln(f,'dfdfdf');

closefile(f);
end except showmessage('Nur User');end;
Das würds auch tun oder?
Im Forum finde ich nichts um zu ermitteln, ob der user Admin ist.

CK_CK 7. Feb 2007 17:49

Re: Arbeitet der User mit eingeschr. Rechten?
 
Also, anstatt sinnlose Dateien auf C:\ zuerzeugen... (Windows könnte auch auf einem anderen Laufwerk installiert sein)
Nimm' besser diese Methode:
Delphi-Quellcode:
function IsAdmin: Boolean;
const
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
  (Value: (0, 0, 0, 0, 0, 5));
  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
  DOMAIN_ALIAS_RID_ADMINS    = $00000220;

var
  hAccessToken: THandle;
  ptgGroups: PTokenGroups;
  dwInfoBufferSize: DWORD;
  psidAdministrators: PSID;
  x: Integer;
  bSuccess: BOOL;
begin
  Result := False;
  bSuccess:=False;
  ptgGroups:=nil;
  psidAdministrators:=nil;
  try
    bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
      hAccessToken);
    if not bSuccess then
    begin
      if GetLastError = ERROR_NO_TOKEN then
      bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
        hAccessToken);
    end;
    if bSuccess then
    begin
      GetMem(ptgGroups, 1024);
      bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
        ptgGroups, 1024, dwInfoBufferSize);
      if bSuccess then
      begin
        AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
          SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
          0, 0, 0, 0, 0, 0, psidAdministrators);
        {$R-}
        for x := 0 to ptgGroups.GroupCount - 1 do
          if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
          begin
            Result := True;
            Break;
          end;
        {$R+}
      end;
    end;
  finally
    if bSuccess then
      CloseHandle(hAccessToken);
    if Assigned(ptgGroups) then
      FreeMem(ptgGroups);
    if Assigned(psidAdministrators) then
      FreeSid(psidAdministrators);
  end;
end;
Viel Spaß,
Chris

mkinzler 7. Feb 2007 17:49

Re: Arbeitet der User mit eingeschr. Rechten?
 
Jein, das ist wie Einparken nach Gehör :-D

snapman 7. Feb 2007 17:50

Re: Arbeitet der User mit eingeschr. Rechten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von CK_CK
Also, anstatt sinnlose Dateien auf C:\ zuerzeugen... (Windows könnte auch auf einem anderen Laufwerk installiert sein)
Nimm' besser diese Methode:
Delphi-Quellcode:
function IsAdmin: Boolean;
Viel Spaß,
Chris

danke danke :)

Hat nur einen kleinen Nachteil:
Die Option unten im Screenshot wird nicht erkannt, was meine Textmethode dann doch tut.

Der_Unwissende 7. Feb 2007 17:51

Re: Arbeitet der User mit eingeschr. Rechten?
 
Zitat:

Zitat von snapman
...

Das würds auch tun oder?

Überhaupt nicht! Damit prüfst Du nur, ob der angemeldete Benutzer Schreibrechte auf das Windows-Verzeichnis hat, die kann ihm ein Admin ohne Probleme geben. Die Schreibrechte auf Windows/System32 könnten aber genauso fehlen, wie das Recht auf beliebige Zweige der Registry zuzugreifen oder eben Rechte zu verteilen. Dazu, dass nicht jede Windows-Installation auf dem Laufwerk C:\ und im Verzeichnis Windows liegen muss braucht man wohl auch nichts sagen.

Luckie hat Dir doch schon gesagt wie Du es einfach und sicher rausbekommst.

Gruß Der Unwissende

snapman 7. Feb 2007 17:54

Re: Arbeitet der User mit eingeschr. Rechten?
 
Zitat:

Zitat von Der_Unwissende
Zitat:

Zitat von snapman
...

Das würds auch tun oder?

Überhaupt nicht! Damit prüfst Du nur, ob der angemeldete Benutzer Schreibrechte auf das Windows-Verzeichnis hat, die kann ihm ein Admin ohne Probleme geben. Die Schreibrechte auf Windows/System32 könnten aber genauso fehlen, wie das Recht auf beliebige Zweige der Registry zuzugreifen oder eben Rechte zu verteilen. Dazu, dass nicht jede Windows-Installation auf dem Laufwerk C:\ und im Verzeichnis Windows liegen muss braucht man wohl auch nichts sagen.

Luckie hat Dir doch schon gesagt wie Du es einfach und sicher rausbekommst.

Gruß Der Unwissende

schaumal grad meinen screenshot
hab den beitrag vorher nochmal editiert

Luckie 7. Feb 2007 21:35

Re: Arbeitet der User mit eingeschr. Rechten?
 
Zitat:

Zitat von snapman
Im Forum finde ich nichts um zu ermitteln, ob der user Admin ist.

Du hast definitv nicht gesucht:
http://www.delphipraxis.net/internal...=administrator

Suchbegriff: Hier im Forum suchenadministrator

In dem Thread wird auch erklärt, wie sich das mit deinem Screenshot verhält.

thomasdrewermann 20. Feb 2007 08:21

Re: Arbeitet der User mit eingeschr. Rechten?
 
Hi,

der CODE von CK_CK funktioniert bei mir irgendwie nicht. Dieser Code zur Prüfung war der einzige der unter Delphi 3 läuft. Allerdings meldet er bei einem Domänen-Benutzer der lokal Admin-Rechte hat, dass dieser ein normaler User wäre.

Gruß
Thomas


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