Права для отключения компьютера
От: Khimik  
Дата: 17.08.20 04:58
Оценка:
Здравствуйте, не знаю в каком разделе это поместить. Я пишу простой планировщик – отключение компьютера через заданное время. Для отключения использую такой код:

function HandleShut(CMD:UINT):boolean;
const SE_SH_N='SeShutdownPrivilege';
var hT:THandle;
    tkp:TTokenPrivileges;
    tkpo:TTokenPrivileges;
    zero:DWORD;
    VI  : TOSVersionInfo;
begin
Result:=False;
  FillChar(VI, SizeOf(VI), 0);
  VI.dwOSVersionInfoSize := SizeOf(VI);
  GetVersionEx(VI);

if vi.dwPlatformId =VER_PLATFORM_WIN32_NT  then
  begin
  zero:=0;
  if not OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hT) then exit;
  if not LookupPrivilegeValue(nil,SE_SH_N,tkp.Privileges[0].Luid)then Exit;
  tkp.PrivilegeCount:=1;
  tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
  AdjustTokenPrivileges(hT,False,tkp,SizeOf(TTokenPrivileges),tkpo,zero);
  if Boolean(GetLastError) then Exit;
  End;
Result:=ExitWindowsEx(cmd,0);
end;

function ExShutDown(Force:boolean=true):boolean;
Begin
if Force Then Result:=HandleShut(EWX_SHUTDOWN or EWX_FORCE) else Result:=HandleShut(EWX_SHUTDOWN);
End;


procedure TSchedulerForm.Button1Click(Sender: TObject);
begin
ExShutDown(true);
end;

Проблема в том, что на моём компьютере при вызове функции ExShutDown срабатывает Касперский, и спрашивает разрешать ли моей программе выполнять данное действие. Мне нужно чтобы выключение компьютера запускалось через заданное время без участия человека, т.е. нужно игнорировать Касперского. Как это сделать? Лучше программно, но можно и через настройки Касперского.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re: Права для отключения компьютера
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 17.08.20 05:19
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Проблема в том, что на моём компьютере при вызове функции ExShutDown срабатывает Касперский, и спрашивает разрешать ли моей программе выполнять данное действие. Мне нужно чтобы выключение компьютера запускалось через заданное время без участия человека, т.е. нужно игнорировать Касперского. Как это сделать? Лучше программно, но можно и через настройки Касперского.


Запустить внешнюю программу "shutdown /s /t 0"
Re: Права для отключения компьютера
От: Kaifa Россия  
Дата: 17.08.20 05:19
Оценка:
в батнике напиши

shutdown -s -t 3600 . (компьютер выключится через час).


п.с. дельфи жиФ еще оказывается...
Re[2]: Права для отключения компьютера
От: Khimik  
Дата: 17.08.20 06:40
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Запустить внешнюю программу "shutdown /s /t 0"


Тоже блокируется Касперским.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.