Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2011, 15:48   #1
MotoArhangel
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 51
Восклицание Как можно завершить не убиваемый процесс?

Пробывал так:
Код:
function ProcessTerminate(dwPID:Cardinal):Boolean;
var
 hToken:THandle;
 SeDebugNameValue:Int64;
 tkp:TOKEN_PRIVILEGES;
 ReturnLength:Cardinal;
 hProcess:THandle;
begin
 Result:=false;
 // Добавляем привилегию SeDebugPrivilege
 if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES
  or TOKEN_QUERY, hToken ) then
    exit;
 // Получаем LUID привилегии
 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;
procedure TForm1.Button1Click(Sender: TObject);
begin
 ProcessTerminate(//pID)
end;
и так:Архив
Но не прокатывает(
Вложения
Тип файла: zip process.zip (120 байт, 11 просмотров)

Последний раз редактировалось MotoArhangel; 11.03.2011 в 16:28.
MotoArhangel вне форума Ответить с цитированием
Старый 11.03.2011, 20:55   #2
MotoArhangel
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 51
По умолчанию

Хотя бы направте в какую сторону копать.
MotoArhangel вне форума Ответить с цитированием
Старый 11.03.2011, 23:16   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

В сторону http://programmersforum.ru/forumdisplay.php?f=29
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как завершить процесс по истечении времени? alexfmf Общие вопросы Delphi 4 16.06.2009 20:02
Как завершить процесс на удаленном Хосте? Stilet Win Api 4 25.03.2009 13:06
Завершить процесс Roman®© Общие вопросы Delphi 5 01.02.2009 15:53
Завершить процесс doniyor Win Api 2 15.05.2008 21:52
Как завершить процесс, зная его имя Никки Win Api 6 14.01.2008 14:04