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.

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

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

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

** Po půl roce je tu další aktualizace Windows ** A opět přináší hlavně hromadu drobných kosmetických vylepšení ** Podívali jsme se na ty nejzajímavější

17.  10.  2017 | Jakub Čížek | 179

Budoucností Windows 10 je Fluent Design. Takto bude jednou vypadat celý systém

Budoucností Windows 10 je Fluent Design. Takto bude jednou vypadat celý systém

** Fluent Design je vzhled, do kterého postupně Microsoft převleče celý systém ** Staví na průhlednosti a velkých plochách ** Do Windows 10 se z části dostane už zítra při vydání podzimní aktualizace

16.  10.  2017 | Stanislav Janů | 154

Nejlepší optické iluze: Z toho vám půjde hlava kolem

Nejlepší optické iluze: Z toho vám půjde hlava kolem

** Mozek se nechá snadno ošálit, a to mnoha způsoby ** Podívejte se na několik nejlepších optických iluzí ** Iluze dokazují, že vnímání reality může být značně zkreslené

16.  10.  2017 | Vojtěch Malý


Aktuální číslo časopisu Computer

Nový seriál o programování elektroniky

Otestovali jsme 17 bezdrátových sluchátek

Jak na nákup vánočních dárků ze zahraničí

4 tankové tiskárny v přímém souboji