
A mellékelt példaprogram megnyitása előtt a DisableTaskManager.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component – Install Component menüpontot.
Komponens készítése
Ahogy a bevezetőben említettük, egyetlen bejegyzéssel elérhetjük, hogy Windows XP rendszerünkben a Feladatkezelő ne induljon el. A komponens DisableTaskManager nevű logikai property-jét igazra állítva elérhetjük, hogy a bejegyzés bekerüljön a Rendszerleíró adatbázis HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System kulcsába. A kulcsban el kell helyeznünk ekkor egy bejegyzést DisableTaskMgr néven, 1 értékkel.
A logikai property hamis értékével viszont megadhatjuk, hogy a bejegyzés törlődjön.
Ekkor a CTRL-ALT-DEL billentyűkombináció lenyomásával csak egy figyelmeztető üzenet jelenik meg, mely arról tájékoztat, hogy a rendszergazda letiltotta a funkciót.
A komponens tehát egy property-t tartalmaz, melynek értékét a FDisableTaskManager változóból olvashatjuk ki, és a SetDisableTaskManager metódussal állíthatjuk be.
property DisableTaskManager : boolean read FDisableTaskManager write SetDisableTaskManager;
A metódusban az érték beállítása után meghívjuk a DoProcess metódust, melyben elvégezzük a Rendszerleíró adatbázis olvasását vagy írását.
procedure TDisableTaskManager.SetDisableTaskManager(Value: boolean);
begin
FDisableTaskManager := Value;
DoProcess(Value);
end;
A metódus paraméterétől függően hozzuk létre a megfelelő kulcsot, vagy töröljük azt az adatbázisból. Amennyiben a paraméter igaz, vagyis a Feladatkezelőt le kell tiltani, akkor megnyitjuk a HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies főkulcsot, és létrehozzuk a System alkulcsot.
key := TRegistry.Create;
key.RootKey := HKEY_CURRENT_USER;
...
if val then begin key.CreateKey('Software\Microsoft\Windows\CurrentVersion\Policies\System');
Majd a System alkulcs megnyitása után megadjuk a megfelelő bejegyzést.
key.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System',false);
key.WriteInteger('DisableTaskMgr',1);
key.CloseKey;
...
Ha a paraméter értéke FALSE, akkor a System alkulcs törlődik, és a Task Manager elérhetővé válik.
if key.KeyExists('Software\Microsoft\Windows\CurrentVersion\Policies\System') then begin
key.DeleteKey('Software\Microsoft\Windows\CurrentVersion\Policies\System');
key.CloseKey;
...
Az alkalmazásban elegendő a ComboBox kontrol megfelelő elemét kiválasztani és a művelet elvégezhető.