![]() |
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: |
Re: Admin
Welche Delphi-Version nutzt Du denn?
...:cat:... |
Re: Admin
|
Re: Admin
Delphi 5
|
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; |
Re: Admin
Funktioniert das auch bei XP??? :gruebel: :gruebel:
|
Re: Admin
Ja. Aber probier´s doch einfach. :roll:
|
Re: Admin
Ist zwar schon etwas älter... aber was liefert die Funktion unter Win9x?
|
Re: Admin
![]() Zitat:
|
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. |
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