Господа, не могу разобраться, подскажите, в чём тут ошибка? Может вызываю не правиль? Сильно не смейтесь, только учусь ;)
Функция:
| Код | function ProcessTerminate(dwPID:Cardinal):Boolean; var hToken:THandle; SeDebugNameValue:Int64; tkp:TOKEN_PRIVILEGES; ReturnLength:Cardinal; hProcess:THandle; begin Result:=false; if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken ) then exit; if not LookupPrivilegeValue( nil, 'SeDebugPrivilege', SeDebugNameValue ) then begin CloseHandle(hToken); exit; end; tkp.PrivilegeCount:= 1; tkp.Privileges[0].Luid := SeDebugNameValue; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken,false,tkp,SizeOf(tkp),tkp,ReturnLength); if GetLastError()<> ERROR_SUCCESS then exit; hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, dwPID); if hProcess =0 then exit; if not TerminateProcess(hProcess, DWORD(-1)) then exit; CloseHandle( hProcess ); tkp.Privileges[0].Attributes := 0; AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength); if GetLastError() <> ERROR_SUCCESS then exit; Result:=true; end; |
P.S. нужно сделать вызов данной функции и завершить определённый системный (!) процесс 8) |