![]() |
Re: Abfragen ob Process Adminrechte hat?
Also bis Win2k geh ich auch noch mit ... alle anderen haben sowieso verloren bei mir :)
Aber vielen dank auf jeden Fall nochmal, ich hab mich schon einige Wochen immermal durch irgendwelche Vista UAP(UAC) und Vista tauglichkeits Blogs geforstet aber in keine stand drin dass das SE_GROUP_ENABLED Flag der auschlaggebende Punkt ist. :( |
Re: Abfragen ob Process Adminrechte hat?
Zitat:
|
Re: Abfragen ob Process Adminrechte hat?
Hier ist deine alte Version:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Procedure : GetAdminSid // Author : NBe // Comment : 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; //////////////////////////////////////////////////////////////////////////////// // Procedure : IsAdmin // Author : NBe // Comment : 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: Abfragen ob Process Adminrechte hat?
Zitat:
Ich sehe keine Sinn darin, hier fehlerhaften Code zu posten. Es wäre hilfreicher, wenn sich jemand die Mühe macht und CheckTokenMembership nachprogrammiert (damit Windows NT 4.0 nicht ausgeschossen wird und die Leute verstehen, was die Funktion eigentlich macht). |
Re: Abfragen ob Process Adminrechte hat?
@NicoDE:
So gerade die aktuelle Public Beta installiert und getestet ... das klappt jetzt wunderbar. Hab deine Win2k Version genommen. Vielen Dank nochmal :) |
Re: Abfragen ob Process Adminrechte hat?
Zitat:
|
Re: Abfragen ob Process Adminrechte hat?
Zitat:
|
Re: Abfragen ob Process Adminrechte hat?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zum Anhang: Bei einem auf diese Art gestarteten Programm muss IsUserAdmin() False liefern (wenn man die Aussage als 'der Benutzer hat lokale administrative Rechte' interpretieren möchte). |
Re: Abfragen ob Process Adminrechte hat?
Könntest du deine obige Funktien entsprechend anpassen, da ich kein Vista zum Testen habe?
|
Re: Abfragen ob Process Adminrechte hat?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:39 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