Delphi - Felhasználói név lekérdezés

forráskód letöltése
Egy felhasználót általában neve alapján azonosítunk. A felhasználói név viszont többféle típusú is lehet. Ezek lekérdezésére adott egy függvény, mellyel meghatározhatjuk azokat. Ez a GetUserNameEx, mely a Secur32.dll-ben kapott helyett, viszont a Delphi unitjaiban nem deklarált, így ezt nekünk kell megtenni a használatához:
function GetUserNameEx(NameType: integer; lpBuffer: PAnsiChar; var nSize: DWORD): BOOL; stdcall;
    external 'secur32.dll' name 'GetUserNameExA';
A függvény csak Windows 2000, vagy ennél magasabb verzió felett használható.

Ezek után már meghívhatjuk. Első paraméterében kell átadnunk egy számot, melyben azt tudatjuk, hogy melyik típusú névre vagyunk kíváncsiak.
  TNameType=(
    NameUnknown,
    NameFullyQualifiedDN,
    NameSamCompatible,
    NameDisplay,
    Unused1,
    Unused2,
    NameUniqueId,
    NameCanonical,
    NameUserPrincipal,
    NameCanonicalEx,
    NameServicePrincipal
  );
A függvény második paraméterében egy memória terület címét kell megadnunk. Ide kerül másolásra a név. Harmadik paraméterben pedig e területnek a nagyságát kell átadnunk. Ha a visszatérési értéke igaz a függvénynek, akkor a lekérdezés sikeres volt.
    if GetUserNameEx(i, buf, size) then begin
      ListBox1.Items.Add(buf);
    end;