Текущий архив: 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