Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

Re: AV bei LookupAccountSidW

  Alt 4. Aug 2007, 13:41
Also ich habe es mal getestet.

Delphi-Quellcode:
BOOL WINAPI LookupAccountSid(
  LPCTSTR lpSystemName,
  PSID lpSid,
  LPTSTR lpName,
  LPDWORD cchName,
  LPTSTR lpReferencedDomainName,
  LPDWORD cchReferencedDomainName,
  PSID_NAME_USE peUse
);
Der Parameter darf wirklich NIL sein, jedoch nur dann, wenn folgende Vorbedingung erfüllt ist :
  • Der Parameter cchName muss kleiner sein, als die tatsächliche Länge des SID-Namens.
    ODER
  • (
    Der Parameter cchReferencedDomainName muss kleiner sein, als die tatsächliche Länge des Domainnamens.
    UND
    Der Parameter cchName muss größer oder größer gleich sein, als die tatsächliche Länge des SID-Namens.
    )

@Luckie: Dein Quellcode wäre demnach semantisch inkorrekt.
Warum es mal so funktioniert und mal anders nicht, kann ich dir nicht sagen. Zumindest auf meinem XP SP2 ergibt der obige Quellcode immer eine Exception in "ntdll.dll".

Ich habe mal dein "WindowsStations.dpr" Programm ausprobiert und musste feststellen, dass StrSIDToName funktioniert, weil die Variable TempLen immer 0 war. Ich habe garkein SID Name bekommen. Dann isses auch kein Wunder, dass es funktioniert

Die Ansi Variante funktionier übrigens immer. Vermutlich ein Bug in der W-Variante? Oder Kompatibilitätsgründe?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat