Tipy a triky v Delphi, díl 106. – správa účtů

I tentokrát budeme pokračovat v tipech pro NT systémy a stejně jako minule bude i dnešní tip souviset se správou uživatelských účtů.
Minule jsme si ukazovali, jak zjistit rozličná práva, kterými uživatel může disponovat a dnes se naučíme zjišťovat seznam uživatelských účtů. Zkušenějším z vás to jistě nemusím vysvětlovat, ale některé méně znalé uživatele by možná překvapilo, že mají v počítači účty, o jejichž existenci ani netuší. Hovoříme-li konkrétně například o Windows XP, máme zde kromě námi vytvořených účtů též kupříkladu účet hosta (Guest) nebo účet technické podpory. Byť nemusí být tyto účty aktivní, přesto je v počítači máme a pomocí běžných nástrojů nejdou odstranit, pokud vůbec nějak (teď mám tedy na mysli konkrétně účet hosta). Ale to bylo jen tak na okraj. Dnes se právě naučíme zjišťovat seznam uživatelských účtů a to všech, tedy i těch "skrytých".

K celé akci využijeme funkce externí systémové knihovny netapi32.dll a raději znovu připomínám, že příklad je celkem logicky určen pouze pro NT systémy. Na formulář umístěte tlačítko, na jehož událost OnClick bude celá akce spuštěna. Dále si přidejte na formulář komponentu ListBox, která nám poslouží pro výpis výsledků. Pokud vše proběhne jak má, dostaneme na výstupu (v komponentě ListBox) seznam všech uživatelských účtů a zároveň jejich slovní popis, vyjadřující funkci účtu.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  USER_INFO_1 = record
    usri1_name: LPWSTR;
    usri1_password: LPWSTR;
    usri1_password_age: DWORD;
    usri1_priv: DWORD;
    usri1_home_dir: LPWSTR;
    usri1_comment: LPWSTR;
    usri1_flags: DWORD;
    usri1_script_path: LPWSTR;
  end;
  lpUSER_INFO_1 = ^USER_INFO_1;

  function NetUserEnum(ServerName: PWideChar; Level, Filter: DWORD; var Buffer: Pointer; PrefMaxLen: DWORD; var EntriesRead, TotalEntries, ResumeHandle: DWORD): Longword; stdcall; external `netapi32.dll`;
  function NetApiBufferFree(pBuffer: PByte): Longint; stdcall; external `netapi32.dll`;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ERead: DWORD;
  TotalEntries: DWORD;
  UserInfo: lpUSER_INFO_1;
  lpBuffer: Pointer;
  ResumeHandle: DWORD;
  Counter: Integer;
  NetApiStatus: LongWord;
begin
  ResumeHandle := 0;
  repeat
    NetApiStatus := NetUserEnum(nil, 1, 0, lpBuffer, 0, ERead, TotalEntries, ResumeHandle);
    UserInfo := lpBuffer;
    for Counter := 0 to ERead - 1 do
    begin
      listbox1.Items.Add(WideCharToString(UserInfo^.usri1_name) + ` --> ` + WideCharToString(UserInfo^.usri1_comment));
      Inc(UserInfo);
    end;
    NetApiBufferFree(lpBuffer);
  until (NetApiStatus <> ERROR_MORE_DATA);
end;

end.

Správnou funkčnost si můžete opět ověřit přímo v systému. Pod Windows XP tento seznam najdete přes Ovládací panely -> Nástroje pro správu -> Správa počítače, kde v levém sloupci vyberete položku Místní uživatelé a skupiny.

Diskuze (3) Další článek: Istanbul hostí CeBIT Bilisim Eurasia 2003

Témata článku: Software, Windows, Programování, Pointer, Účet, Běžný nástroj, Správa, Trik, Counter, Díl


Určitě si přečtěte

Google má nové telefony, počítač a domácí displej. Česko je stále mimo

Google má nové telefony, počítač a domácí displej. Česko je stále mimo

** Google dnes představil novinky ** Dočkali jsme se nového telefonu Pixel 3, tabletopočítače a domácího displeje ** Rozšíření Google Assistenta do dalších zemí se bohužel nekoná

David Polesný | 45

Lenovo přivezlo na IFA 2018 skutečné inovace. Tyto tři notebooky stojí za to

Lenovo přivezlo na IFA 2018 skutečné inovace. Tyto tři notebooky stojí za to

** Yoga C930 nabídne revoluční reproduktor v kloubu displeje ** Yoga Book C930 představuje zdařilý reparát podivného Yoga Booku ** ThinkPad X1 Extreme se může pochlubit extrémní výbavou v tenkém těle

Tomáš Holčík | 16

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

** Máme eObčanku, máme čtečku, vyzkoušeli jsme přihlášení na weby úřadů. ** Objevily se drobné problémy, podařilo se nám je vyřešit. ** Používání eObčanky pro online identifikaci je velmi pohodlné.

Marek Lutonský | 35


Aktuální číslo časopisu Computer

Jak vytvořit a spravovat vlastní web

Velký test herních klávesnic a DVB-T2 tunerů

Vše o formátu RAW

Vybíráme nejlepší základní desku