Program RemoteOffAgent; {$R autooff.res} Uses SysUtils,Windows; {-----------------------------------------------------------------------------------------------------} procedure OffPC; var hToken:THANDLE; tkp,tkp2:TOKEN_PRIVILEGES; retl:cardinal; begin OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken); LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid); tkp.PrivilegeCount := 1; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, false, tkp, SizeOf(tkp2),tkp2, retl); ExitWindowsEx(EWX_SHUTDOWN,0) end; {-----------------------------------------------------------------------------------------------------} var DateTime : TDateTime; str : string; Const Msg: String = 'Shutdown system'; Begin {-----------------------------------------------------------------------------------------------------} SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS); {-----------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------} while True do begin DateTime := Time; // store the current date and time str := TimeToStr(DateTime); str := Copy(str,1,5); If str = '02:00' Then Begin OffPC; Exit; End; { MessageBox(0,@str[1],'Good!',0);} Sleep(10000); end; End. |