Einzelnen Beitrag anzeigen

Willie1

Registriert seit: 28. Mai 2008
668 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

als Administrator ausführen

  Alt 30. Jul 2017, 19:08
Hallo Leute,
in einem Programm von mir soll ein Zugriff auf die Registry stattfinden, der nur möglich ist, wenn das Programm mit der Option "Als Administrator ausführen"
gestartet wird.
Aus einem Beitrag in StackOverflow habe ich folgende Funktion entwickelt:
Delphi-Quellcode:
 function CheckTokenMembership(TokenHandle: THandle; SidToCheck: PSID; var IsMember: BOOL): BOOL; stdcall; external advapi32;

 function RunAsAdmin : Boolean;
 const
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
  DOMAIN_ALIAS_RID_ADMINS = $00000220;

 var
  pIdentifierAuthority :TSIDIdentifierAuthority;
  pSid : WinApi.Windows.PSid;
  IsMember : BOOL;
 begin
  pIdentifierAuthority := SECURITY_NT_AUTHORITY;
  Result := AllocateAndInitializeSid(pIdentifierAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, pSid);
  try
    if Result then
      if not CheckTokenMembership(0, pSid, IsMember) then
         Result:= False
      else
         Result:=IsMember;
  finally
     FreeSid(pSid);
  end;
 end;
Sie gibt true zurück, wenn die genannte Option genutzt wird. Bei mir funktioniert sie. Frage:ist das so in Ordnung?

Gruß Willie.
  Mit Zitat antworten Zitat