Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Синхронизация завершения работы Windows

01.01.2007
{ 
Works only on Windows NT/2000/XP systems
}
 
 
function TimedShutDown(Computer: string; Msg: string; Time: Word; Force: Boolean; Reboot: Boolean): Boolean;
 
var
   rl
: Cardinal;
   hToken
: Cardinal;
   tkp
: TOKEN_PRIVILEGES;
 
begin
   
//get user privileges to shutdown the machine, we are talking about win nt and 2k here
 
if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
     
ShowMessage('Cannot open process token.')
   
else
   
begin
     
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
     
begin
       tkp
.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
       tkp
.PrivilegeCount := 1;
       
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
       
if GetLastError <> ERROR_SUCCESS then
       
ShowMessage('Error adjusting process privileges.');
     
end
   
else
     
ShowMessage('Cannot find privilege value.');
   
end;
 
   
Result := InitiateSystemShutdown(PChar(Computer), PChar(Msg), Time, Force, Reboot)
 
end;
 
 
//Start shut down
procedure TForm1
.Button1Click(Sender: TObject);
 
begin
   
if not TimedShutDown('\\computername', 'you have to shutdown', 30, true, true) then
     
ShowMessage('function failed...');
 
end;
 
 
//Abort shut down
procedure TForm1
.Button2Click(Sender: TObject);
 
begin
   
AbortSystemShutdown('\\computername');
 
end;

Взято с сайта: https://www.swissdelphicenter.ch