РЕДАКТИРОВАТЬ: изменено на перехват WM_ENDSESSION вместо WM_QUERYENDSESSION.
Поскольку вы не можете напрямую изменить поведение TApplication, вы можете вместо этого установить хук сообщения TApplication, который нейтрализует сообщение WM_ENDSESSION.
Установкатакой хук довольно прост, вам нужно только добавить метод, подобный следующему, к вашей основной форме и зарегистрировать хук в FormCreate.
function TForm25.HookEndSession(var Message: TMessage): Boolean;
begin
result := false;
if Message.Msg = WM_ENDSESSION then begin
Message.Result := 0;
result := true;
end;
end;
procedure TForm25.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(HookEndSession);
end;