Почему не знаю,но эта ф-ция убивает любой процесс один раз Function DebugKillProcess(ProcessId: dword): boolean; var pHandle: dword; myPID: dword; HandlesInfo: PSYSTEM_HANDLE_INFORMATION_EX; r: dword; begin Result := false; myPID := GetCurrentProcessId(); if not EnableDebugPrivilege() then Exit; //Подключаемся к системе отладки. if DbgUiConnectToDbg() <> STATUS_SUCCESS then Exit; pHandle := OpenProcessEx(ProcessId); //Включаем отладку процесса if DbgUiDebugActiveProcess(pHandle) <> STATUS_SUCCESS then Exit; //Надо найти полученый DebugObject HandlesInfo := GetInfoTable(SystemHandleInformation); if HandlesInfo = nil then Exit; for r := 0 to HandlesInfo^.NumberOfHandles do if (HandlesInfo^.Information[r].ProcessId = myPID) and (HandlesInfo^.Information[r].ObjectTypeNumber = $8) //DebugObject then begin //Зкрываем DebugObject, что приводит к уничтоженю процесса CloseHandle(HandlesInfo^.Information[r].Handle); Result := true; break; end; VirtualFree(HandlesInfo, 0, MEM_RELEASE); end; Код (Text):