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í, Trik, Pointer, Správa, Běžný nástroj, Counter, Účet, Díl


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

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

** Pornografie údajně představuje třetinu internetové obsahu a je technologický tahounem ** Do erotického obsahu postupně zasahuje i virtuální realita ** Kromě vizuálního vjemu se pracuje také na virtuálním uspokojení toho hmatového

Jan Dudek | 28

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

** Total Commander je na Windows takřka legendou ** Licence však stojí více než tisíc korun ** Našli jsme pro vás deset alternativ dostupných zdarma

Karel Kilián | 140

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

** Vědci spočítali, jak velká by musela být posádka pro vícegenerační let k nejbližší hvězdné soustavě ** Proxima Centauri se nachází 4,3 světelných let od nás ** Za současných technologií bychom k ní letěli 6300 let

Petr Kubala | 53

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 44

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

** Portál občana už funguje, vyřídíte na něm první požadavky ** Funkce se budou postupně rozšiřovat ** Web je docela moderní a přehledný

David Polesný | 65

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

** Systém Windows 10 umí spoustu užitečných drobností ** O mnoha praktických funkcích pravděpodobně ani nevíte ** Poznejte užitečné tipy, které se vám mohou hodit každý den

Vladislav Kluska | 36

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

** Apple večer představil novinky ** Ukáže nové operační systémy, ale čekala se i nová zařízení ** Začíná vývojářská konference Applu WWDC 2018

Karel Javůrek | 87


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji