Tipy a triky v Delphi, díl 105. - práva uživatele

Dnes se podíváme na to, jaké informace se dají získat o přihlášeném uživateli, přesněji řečeno, o jeho právech.
Už z úvodu je jasné, že dnešní tip je opět určen pro NT systémy. Hovoříme-li o právech uživatele, jistě dobře víte, že se tím nemyslí jen právo přístupu uživatele pouze do jemu určených složek, ale administrátor může omezit počínání uživatelů i jiným způsobem. Někteří nemají přístup k ovládacím panelům počítače, uživatel rovněž nemusí mít právo instalovat aplikace a podobně. Možností je prostě celá řada a na některé by člověk na první zamyšlení ani nepřišel. Mezi taková méně známá uživatelská práva patří například právo změnit systémový čas, právo zálohovat a obnovit soubory, vytvořit stránkovací soubor, upravit kvóty paměti pro proces a podobně.

Právě takový seznam méně známých práv se naučíme u přihlášeného uživatele zjistit. Funkce bude vytvořena jako událost stisku tlačítka a na formulář rovněž přidejte komponentu ListBox, do které budou výsledky vypsány.

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;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  TokenSize = 800;
var
  hToken: THandle;
  pTokenInfo: PTOKENPRIVILEGES;
  ReturnLen, NameSize, DisplSize, LangId: Cardinal;
  i: Integer;
  PrivName, DisplayName: PChar;
begin
  try
    GetMem(pTokenInfo, TokenSize);
    GetMem(PrivName, 255);
    GetMem(DisplayName, 255);
    try
      if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then Exit;
      if not GetTokenInformation(hToken, TokenPrivileges, pTokenInfo, TokenSize, ReturnLen) then Exit;
      for i := 0 to pTokenInfo.PrivilegeCount - 1 do
      begin
        DisplSize := 255;
        NameSize  := 255;
        LookupPrivilegeName(nil, pTokenInfo.Privileges[i].Luid, PrivName, Namesize);
        LookupPrivilegeDisplayName(nil, PrivName, DisplayName, DisplSize, LangId);
        ListBox1.Items.Add(PrivName + `  -  ` + DisplayName);
      end;
    finally
      FreeMem(PrivName);
      FreeMem(DisplayName);
      FreeMem(pTokenInfo);
    end;
  except
    ShowMessage(`Chyba! Nepodarilo se alokovat pamet.`);
  end;
end;

end.

Po spuštění funkce bude do připraveného ListView vypsán seznam privilegií, které uživatel má. Pokud by vás snad zajímal kompletní seznam všech dostupných možností, můžete si jej prohlédnout přímo v systému, kdy v Ovládacích panelech zvolíte položku Nástroje pro správu, zde Místní zásady zabezpečení a v otevřeném okně pak v levém stromovém seznamu vyberte položku Přiřazení uživatelských práv (tento postup platí pro Windows XP). Uvidíte zde kompletní seznam a u každé položky je uveden uživatel (či seznam uživatelů), který daným právem disponuje. Není se ani moc čemu divit, že z běžných uživatelů (pomineme-li systém jako takový) má na podobné "vychytávky" právo obvykle jen administrátor.

Ještě jednou tedy připomínám, že dnešní příklad bude fungovat pouze na NT systémech, přičemž pod systémy 9x se nestane nic.

Diskuze (3) Další článek: Vydán Kerio Winroute Firewall 5.1.0

Témata článku: Software, Windows, Programování, Díl, Trik, Exit


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

Takhle zemřete, když asteroid dopadne na vaše město

Takhle zemřete, když asteroid dopadne na vaše město

** Jak by to dopadlo, kdyby na světovou metropoli či do nedalekého moře dopadl velký asteroid? ** Simulovali to odborníci z University of Southampton ** Výsledky jsou velmi zajímavé

Petr Kubala | 32

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 | 141

Š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

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

Nová zbraň Microsoftu proti iPadu: Levný tablet Surface Go bude stát jen deset tisíc

** Microsoft představil nový tablet Surface Go ** Nový model zaujme nízkou cenou, ale schopnostmi zařízení Surface ** Microsoft nepoužil čip ARM, ale klasický procesor od Intelu 

Karel Javůrek | 116


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