Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AV bei LookupAccountSidW

  Alt 4. Aug 2007, 02:43
Ich bin am verzweifeln. Folgender Code:
Delphi-Quellcode:
function StrSIDToName(const StrSID: Widestring; var Name: WideString; var SIDType: DWORD): Boolean;
var
  SID : PSID;
  Buffer : PWideChar;
  NameLen, TempLen : Cardinal;
  succes : Boolean;
begin
  SID := nil;
  succes := ConvertStringSIDToSID(PWideChar(StrSID), SID);
  if succes then
  begin
    NameLen := 0;
    TempLen := 0;
    LookupAccountSidW(nil, SID, nil, NameLen, nil, TempLen, SIDType);
    GetMem(Buffer, NameLen * sizeOf(WideChar));
    try
      succes := LookupAccountSidW(nil, SID, Buffer, NameLen, nil, TempLen, SIDType);
      if succes then
        SetString(Name, Buffer, Namelen);
    finally
      FreeMem(Buffer);
    end;
  end;
  if Assigned(SID) then
    LocalFree(Cardinal(SID));
  result := succes;
end;
Ich bekomme beim zweiten Aufruf von LookupAccountSidW eine AV. Das verrückte ist, in einem anderen Projekt benutze ich exakt den selben Code und da funktioniert er.
Nehme ich LookupAccountSIDA geht alles. Ich will aber die Unicode Version nutzen.

Im Anhang mal beide Projekte. Ich weiß nicht, was ich in dem einen Projekt anders mache.
Angehängte Dateien
Dateityp: zip mpuprocesstools_197.zip (8,7 KB, 4x aufgerufen)
Dateityp: dpr windowsstations_201.dpr (5,0 KB, 5x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat