Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
Re: LookupAccountSidW und Datenbereich zu klein
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
|
|
Zitat
|