Monday, June 23, 2008

Zobrazení upozornění před logovacím dialogem

Ve Windows existuje možnost drobnou úpravou registru zajistit to, že se ještě před samotným dialogem pro přihlášení do systému zobrazí okno s textem, které tak může uživatele upozornit na různé události. Po potvrzení dialogu kliknutím na OK pak již pokračuje přihlášení zcela běžným způsobem. Má to tu výhodu, že takto můžete jednak upozornit všechny "legální" uživatele daného systému na nějakou důležitou věc (lépe řečeno vaše aplikace může ohlásit nějakou událost), ale můžete také na cokoliv upozornit (varovat) uživatele, kteří na daném počítači svůj účet nemají.
Postup by měl fungovat ve všech Windows, i když musím přiznat, že mně osobně to na systémech 9x nepracovalo. Pod Windows 2000 však vše pracovalo bezvadně a koneckonců má tato funkce pro systémy NT/2000/XP mnohem větší opodstatnění než pro systémy 9x, které nejsou víceuživatelské v pravém slova smyslu.
Nyní tedy již k samotné implementaci v Delphi. Jelikož jsme v našem seriálu už prováděli úpravy registrů nesčetněkrát, zřejmě by stačilo pouze uvést, kterou větev a klíč upravit, ale pro jistotu si uvedeme celý kód. Snad nemusím připomínat, že je třeba do projektu přidat jednotku Registry.
procedure TForm1.Button1Click(Sender: TObject);
var
key: string;
Reg: TRegIniFile;
begin
key := '\Software\Microsoft\Windows NT\CurrentVersion\Winlogon';
Reg := TRegIniFile.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.CreateKey(Key);
if Reg.OpenKey(Key, False) then
begin
Reg.WriteString(key, 'LegalNoticeCaption', 'Titulek zobrazeného okna');
Reg.WriteString(key, 'LegalNoticeText', 'Vlastní zobrazovaný text');
end;
finally
Reg.Free;
end;
end;
Pro systémy 9x musíte vynechat v textu klíče NT, takže klíč pak vypadá takto:
'\Software\Microsoft\Windows\CurrentVersion\Winlogon'
Zobrazovaný text může mít 256 znaků, u systémů NT s posledním service packem (a zřejmě tím pádem u všech systému 2000 a XP) až 1024 znaků.