Здравствуйте, не знаю в каком разделе это поместить. Я пишу простой планировщик – отключение компьютера через заданное время. Для отключения использую такой код:
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 срабатывает Касперский, и спрашивает разрешать ли моей программе выполнять данное действие. Мне нужно чтобы выключение компьютера запускалось через заданное время без участия человека, т.е. нужно игнорировать Касперского. Как это сделать? Лучше программно, но можно и через настройки Касперского.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
в батнике напиши
shutdown -s -t 3600 . (компьютер выключится через час).
п.с. дельфи жиФ еще оказывается...
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.