Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: LookupAccountSidW und Datenbereich zu klein

  Alt 7. Mär 2007, 13:40
Und was wenn du den Rückgabewert berücksichtigst?

Bringt zwar beim Ansi-Wide-Problem nichts, aber marabu sollte zumindestens nicht meckern.

Delphi-Quellcode:
function StrSIDToName(const StrSID: Widestring; var Name: WideString; var SIDType: DWORD): DWORD;
var
  SID : PSID;
  Buffer : PWideChar;
  NameLen, TempLen : Cardinal;
begin
  SID := nil;
  if ConvertStringSIDToSID(PWideChar(StrSID), SID) then begin
    NameLen := 0;
    TempLen := 0;
    if LookupAccountSidW(nil, SID, nil, NameLen, nil, TempLen, SIDType) then
      result := 0 else result := GetLastError;
    if (result = 0) or (result = WasWeißIch) then begin
      GetMem(Buffer, NameLen);
      try
        if LookupAccountSidW(nil, SID, Buffer, NameLen, nil, TempLen, SIDType) then begin
          SetString(Name, Buffer, Namelen);
          result := 0;
        end else result := GetLastError;
      finally
        FreeMem(Buffer);
      end;
    end;
  end else result := GetLastError;
  if Assigned(SID) then LocalFree(Cardinal(SID));
end;
$2B or not $2B
  Mit Zitat antworten Zitat