Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

Прога для выключения компа в определённое времы!   Найти похожие ветки 

 
Vovka ©   (2007-09-04 14:30) [0]

Доброе время суток!
Хочу написать прогу для выключения компа в определённое время! Неподскажите как мне можно это осуществить?
Зарание спосибо!


 
Dib@zol ©   (2007-09-04 14:33) [1]

С какой целью?


 
Ega23 ©   (2007-09-04 14:34) [2]


function TStandartUPS.ShutdownOS: Boolean;
const
 SE_SHUTDOWN_NAME="SeShutdownPrivilege";
var
 hToken: THandle;
 tkpNew, tkpPrevious: TTokenPrivileges;
 iLength: Cardinal;
begin
 Result:=False;

 // Получаем токен процесса
 if not OpenProcessToken(GetCurrentProcess,
             TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
   Exit;

 // Получаем LUID для привилегии завершения работы системы
 LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, tkpNew.Privileges[0].Luid);
 tkpNew.PrivilegeCount:=1; {установка одной привилегии}
 tkpNew.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;

 // Получаем привилегию завершения работы системы для процесса
 iLength:=SizeOf(TTokenPrivileges);
 AdjustTokenPrivileges(hToken, False, tkpNew, SizeOf(TTokenPrivileges),
   tkpPrevious, iLength);

 // Невозможно проверить возвращаемое значение функции AdjustTokenPrivileges
 if GetLastError<>ERROR_SUCCESS then
   Exit;

 // Завершаем работу системы и заставляем все приложения закрыться
 Result:=ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0);
end;


И в Планировщик задач aka Scheduler


 
Инс ©   (2007-09-04 14:36) [3]


> [2] Ega23 ©   (04.09.07 14:34)

А дескриптор токена закрыть? ;)


 
Dib@zol ©   (2007-09-04 14:37) [4]

> [3] Инс ©   (04.09.07 14:36)

А на хрена? Кульхацкеры так не поступают. Им бы винду отрубить...


 
Ega23 ©   (2007-09-04 14:41) [5]


> А дескриптор токена закрыть? ;)


Это не мой код. Но вообще - логично, я коллеге передам, спасибо.


 
Anatoly Podgoretsky ©   (2007-09-04 14:44) [6]

> Vovka  (04.09.2007 14:30:00)  [0]

Она уже написана - системный планировщик, есть на каждом компьютере, кроме возможно старых.


 
Инс ©   (2007-09-04 14:44) [7]

Сделайте для включения/отключения привилегий в маркере доступа отдельную функцию. Чтобы как-то мух от котлет отделять.
function EnablePrivilegeEx(Process: THandle; Name: String; Enable: Boolean):
 Boolean;
var
 LUID: TLargeInteger;
 Token: THandle;
 Privileges: TOKEN_PRIVILEGES;
 ReturnLength: Cardinal;
begin
 Result:=false;
 Win32Check(LookupPrivilegeValue(nil,PChar(Name),LUID));
 Win32Check(OpenProcessToken(Process,TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES,
   Token));
 try
   Privileges.PrivilegeCount:=1;
   Privileges.Privileges[0].Luid:=LUID;
   if Enable then
     Privileges.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED
   else
     Privileges.Privileges[0].Attributes:=0;
   AdjustTokenPrivileges(Token,false,Privileges,SizeOf(TOKEN_PRIVILEGES),
     Privileges,ReturnLength);
   if GetLastError = ERROR_SUCCESS then Result:=true;
 finally
   CloseHandle(Token);
 end;
end;


 
Steep ©   (2007-09-04 15:41) [8]


> Она уже написана - системный планировщик, есть на каждом
> компьютере, кроме возможно старых.

Я ее первым делом делом из дистриба удаляю и блочу на установленных


 
Anatoly Podgoretsky ©   (2007-09-04 15:46) [9]

> Steep  (04.09.2007 15:41:08)  [8]

Что ты сносишь, морду над ним, или выкусываешь его из системных библиотек.



Страницы: 1 вся ветка

Текущий архив: 2007.09.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
3-1180074247
RomanH
2007-05-25 10:24
2007.09.30
Открыть XLS, как DataSet


2-1188578871
bagos
2007-08-31 20:47
2007.09.30
объединенные ячейки в гриде


15-1188495169
Kolan
2007-08-30 21:32
2007.09.30
Что за кодировка: &amp;laquo;РЁСЂСЌРє Третий&amp;raquo; ?


1-1185019258
Makhanev Alexander
2007-07-21 16:00
2007.09.30
Совместимость с вистой...


1-1184871572
TUser
2007-07-19 22:59
2007.09.30
Turbo Delphi