Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > В чём ошибка?


Автор: maza 11.7.2004, 19:39
Господа, не могу разобраться, подскажите, в чём тут ошибка? Может вызываю не правиль?
Сильно не смейтесь, только учусь ;)

Функция:
Код
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)

Автор: Albinos_x 11.7.2004, 20:54
Попробуй дать название функции другое, т. к. есть функция АПИ с таким именем , может , поэтому вызывается ошибка

Автор: December 11.7.2004, 22:48
А какая ошибка-то?

Автор: p0s0l 11.7.2004, 23:00
Дык тут не ошибка, то что написано - правильно (но может надо еще что-нить делать кроме установки привилегии), просто винда не даёт завершить системные процессы, по-крайней мере у меня OpenProcess (PROCESS_TERMINATE...) делается, но TerminateProcess выдаёт "Acess is denied". Хотя вроде раньше как-то завершались системные процессы...

Автор: maza 12.7.2004, 10:26
Может есть альтернатива?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)