Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Windows API / MS.NET Framework API (https://www.delphipraxis.net/20-library-windows-api-ms-net-framework-api/)
-   -   Delphi String SID in Namen umwandeln (https://www.delphipraxis.net/64301-string-sid-namen-umwandeln.html)

Luckie 1. Mär 2006 22:44


String SID in Namen umwandeln
 
Folgende Funktion wandelt eine SID, die als String vorliegt, in den entsprechenden Namen um. Aus 'S-1-5-32-544' wird also "Administratoren". Desweiteren wird der Typ der SID zurückgegeben.

Delphi-Quellcode:

  Author : Michael Puff - [url]http://www.michael-puff.de[/url]
  Date   : 2006-03-01 
  License : PUBLIC DOMAIN


 
function ConvertStringSidToSid(StringSid: PWideChar; var Sid: PSID): Boolean; stdcall; external 'advapi32.dll' name
'ConvertStringSidToSidW';

 
function StrSIDToName(const StrSID: Widestring; var Name: string; var SIDType: DWORD): Boolean;
var
  SID              : PSID;
  Buffer           : PChar;
  NameLen, TempLen : Cardinal;
  err              : Boolean;
begin
  SID = nil;
  err := ConvertStringSIDToSID(PWideChar(StrSID), SID);
  if err then
  begin
    NameLen := 0;
    TempLen := 0;
    LookupAccountSidA(nil, SID, nil, NameLen, nil, TempLen, SIDType);
    GetMem(Buffer, NameLen);
    try
      err := LookupAccountSidA(nil, SID, Buffer, NameLen, nil, TempLen, SIDType);
      if err then
        SetString(Name, Buffer, Namelen);
    finally
      FreeMem(Buffer);
    end;
  end;
  if Assigned(SID) then
    LocalFree(Cardinal(SID));
  result := err;
end;

 
procedure TForm1.Button1Click(Sender: TObject);
var
  Name             : string;
  SIDType: DWORD;
begin
  if StrSIDToName('S-1-5-32-544', Name, SIDType) then
    ShowMessage(Name)
  else
    ShowMessage(SysErrorMessage(GetLastError));
end;
Weiterführende Links ins PSDK: MSDN-Library durchsuchenConvertStringSIDToSID, MSDN-Library durchsuchenLookupAccountSid.

Stichworte: SID, ConvertStringSIDToSID, LookupAccountSid

[edit=Chakotay1308]KLassifizierung hinzugefügt. Mfg, Chakotay1308[/edit]


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