Delphi - Windows Feladatkezelőt letiltó komponens készítése

forráskód letöltése
Az NT alapokon nyugvó rendszerek felhasználói számára ismert és használt lehetőség a Windows Feladatkezelő szolgáltatás (Task Manager), melynek segítségével többek között nyomon követhetjük a számítógépen futó processzeket. Mint a Windows sok egyéb funkciója, ez a szolgáltatás is engedélyezhető, illetve letiltható a Rendszerleíró adatbázis megfelelő konfigurációjával. Cikkünkben elkészítünk egy komponenst, melynek logikai változójában engedélyezhetjük, vagy tilthatjuk a szolgáltatás elérését.
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ő.