{ Hmm ... My initial attempt was to disable the Int 19h handler, which is called when you hit ctrl-alt-del; but it didn't work. So here's a TSR that "cheats": if you hit "ctrl" and "alt" and then "del", it flags "ctrl" and "alt" as "not down" and so your system never sees the reboot condition. } {$M $0400, $0000, $0000} {$F+} program noreboot; uses dos; const ctrlbyte = $04; { Memory location $0040:$0017 governs the statuses of } altbyte = $08; { the Ctrl key, Alt, Shifts, etc. the "$04" bit } { handles "Ctrl"; "$08" handles "Alt". } var old09h: procedure; { original keyboard handler } ctrldown, altdown, deldown: boolean; keyboardstat: byte absolute $0040:$0017; { the aforementioned location } {-----------------------------------------------------------------------------} procedure new09h; interrupt; { new keyboard handler: it checks if you've pressed "Ctrl", "Alt" and "Delete"; if you have, it changes "Ctrl" and "Alt" to "undepressed". Then it calls the "old" keyboard handler. } begin if port[$60] and $1d = $1d then ctrldown := (port[$60] < 128); if port[$60] and $38 = $38 then altdown := (port[$60] < 128); if port[$60] and $53 = $53 then deldown := (port[$60] < 128); if ctrldown and altdown and deldown then begin keyboardstat := keyboardstat and not ctrlbyte; { By killing the "Ctrl" } keyboardstat := keyboardstat and not altbyte; { and "Alt" bits, the } end; { "reboot" never runs } asm pushf end; old09h; end; {-----------------------------------------------------------------------------} begin getintvec($09, @old09h); setintvec($09, @new09h); { set up new keyboard handler } ctrldown := false; altdown := false; { Set "Ctrl", "Alt", "Delete" to "False" } deldown := false; keep(0); end.