Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Admin (https://www.delphipraxis.net/33151-admin.html)

OnFire 2. Nov 2004 12:22


Admin
 
Frage:

wenn ich für alle Benutzer die Adminstatoren sind,eine spezielle Funktion
eingebaut habe und will das nur diese die erwähnte Funktion benûtzen können, wie finde ich heraus ob sie zur Administrator-Gruppe von einem PC gehören.

Wäre echt froh wenn das jemand wüsste... :thumb:


OnFire :gruebel:

sakura 2. Nov 2004 12:24

Re: Admin
 
Welche Delphi-Version nutzt Du denn?

...:cat:...

Steve 2. Nov 2004 12:26

Re: Admin
 
Von den Schweizern...

Gruß
Stephan :dance:

OnFire 2. Nov 2004 12:27

Re: Admin
 
Delphi 5

Luckie 2. Nov 2004 12:36

Re: Admin
 
Ich glaube, die Version von Nico ist sicherer:
Delphi-Quellcode:
function GetAdminSid: PSID;
const
  // bekannte SIDs ... (WinNT.h)
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
  // bekannte RIDs ... (WinNT.h)
  SECURITY_BUILTIN_DOMAIN_RID: DWORD = $00000020;
  DOMAIN_ALIAS_RID_ADMINS: DWORD = $00000220;
begin
  Result := nil;
  AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
    SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0, Result);
end;

////////////////////////////////////////////////////////////////////////////////
//
//  IsAdmin
//    Autor: Nico Bendlin

function IsAdmin: LongBool;
var
  TokenHandle: THandle;
  ReturnLength: DWORD;
  TokenInformation: PTokenGroups;
  AdminSid: PSID;
  Loop: Integer;
begin
  Result := False;
  TokenHandle := 0;
  if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, TokenHandle) then
  try
    ReturnLength := 0;
    GetTokenInformation(TokenHandle, TokenGroups, nil, 0, ReturnLength);
    TokenInformation := GetMemory(ReturnLength);
    if Assigned(TokenInformation) then
    try
      if GetTokenInformation(TokenHandle, TokenGroups, TokenInformation,
        ReturnLength, ReturnLength) then
      begin
        AdminSid := GetAdminSid;
        for Loop := 0 to TokenInformation^.GroupCount - 1 do
        begin
          if EqualSid(TokenInformation^.Groups[Loop].Sid, AdminSid) then
          begin
            Result := True;
            Break;
          end;
        end;
        FreeSid(AdminSid);
      end;
    finally
      FreeMemory(TokenInformation);
    end;
  finally
    CloseHandle(TokenHandle);
  end;
end;

OnFire 2. Nov 2004 12:44

Re: Admin
 
Funktioniert das auch bei XP??? :gruebel: :gruebel:

MathiasSimmack 2. Nov 2004 12:52

Re: Admin
 
Ja. Aber probier´s doch einfach. :roll:

FriFra 15. Aug 2005 20:46

Re: Admin
 
Ist zwar schon etwas älter... aber was liefert die Funktion unter Win9x?

Luckie 15. Aug 2005 20:53

Re: Admin
 
MSDN-Library durchsuchenGetTokenInformation
Zitat:

Client: Included in Windows XP, Windows 2000 Professional, Windows NT Workstation.
Server: Included in Windows Server 2003, Windows 2000 Server, Windows NT Server.
Wird wohl gar nicht erst starten.

FriFra 15. Aug 2005 20:57

Re: Admin
 
Die Frage ist eben, welchen Wert liefert mir die Funktion zurück? "Wird nicht straten" wird wohl nicht passieren... es gibt höchstens einen Fehler...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.
Seite 1 von 3  1 23      

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