Ошибка не удается завершить процесс с идентификатором

  • IOCTL_

    Junior Member

    • Регистрация: 08 2018
    • Сообщений: 30

    Бывают случаи, когда в памяти остаётся процесс, который штатными средствами винды убить невозможно. Попытка убийства через диспетчер задач выдаёт ошибку доступа, а taskkill пишет:

    Ошибка: Не удается завершить процесс с идентификатором 1234.
    Причина: Ни один из экземпляров этого задания не запущен.

    Если глянуть потоки через procexp, то там либо непонятный пустой поток без опознавательных признаков с TID 0, либо ntdll.dll!RtlUserThreadStart и какой-то вменяемый TID. Кто-нибудь знает, что это за фигня и чем её грохнуть?

  • f13nd

    Junior Member

    • Регистрация: 11 2006
    • Сообщений: 1611

    Такие процессы появляются если запустить любой процесс с флагом CREATE_SUSPENDED и после этого не стартануть основной тред. Возможное решение — запустить его, хотя хз надо ли. Лучше разобраться кто их плодит.

    2 оттенка серого

    Комментарий

  • Vicshann

    Junior Member

    • Регистрация: 05 2011
    • Сообщений: 23

    Бывало такое иногда из-за каких-то сбоев асинхронного доступа к файлам, с тем же uTorrent, например
    Может тут CancelIoEx надо использовать, но придется вызывать из того же процесса и знать нужный Handle.

    Комментарий

  • Xamil

    Junior Member

    • Регистрация: 03 2020
    • Сообщений: 3

    через натив их всех в SUSPENDED, потом через NtQuerySystemInformation — отследить, тут были вроде сорцы Process Explorer+ от HiEndSoft

    Комментарий

  • IOCTL_

    Junior Member

    • Регистрация: 08 2018
    • Сообщений: 30

    А тулза какая-то есть, чтобы грохать процессы нестандартными способами? Ну там через Nt, Zw и т.п. Помню, была какая-то тулза и там были разные кнопки с названиями функций: NtTerminateProcess, ZwTerminateProcess и ещё штук 6 вроде. Ещё помню тулзу, которая через свой драйвер процессы грохала. Есть у кого-то такие тулзы?

    Комментарий

  • Boostyq

    Junior Member

    • Регистрация: 03 2016
    • Сообщений: 464

    Сообщение от IOCTL_

    А тулза какая-то есть,

    Раньше в Process Hacker 2 было куча методов терминации процесса, но большая методов работала только на 32-битных системах, и это убрали в v2.39
    Сейчас методы переписали и перенести в отдельный плагин

    https://github.com/processhacker/plugins-extra/tree/master/TerminatorPlugin

    Наверное собранной версии нет, и это нужно компилировать, либо можно просто взять сами методы

    В облачке многоточия

    Комментарий

  • IOCTL_

    Junior Member

    • Регистрация: 08 2018
    • Сообщений: 30

    Нашёл статейко шикарное по этому поводу:

    12 ways to terminate a process

    . Кто-то уже кодил подобное? Как сейчас помню, что где-то такое видел.

    Комментарий

  • Boostyq

    Junior Member

    • Регистрация: 03 2016
    • Сообщений: 464

    wj32 это и есть Process Hacker -.-»

    В облачке многоточия

    Комментарий

  • IOCTL_

    Junior Member

    • Регистрация: 08 2018
    • Сообщений: 30

    Boostyq
    Спасибо! Если ничего не найдётся, то придётся компилить или что-то придумывать. Но я помню, что это уже где-то было.

    Добавлено спустя 2 минуты

    Сообщение от Boostyq

    wj32 это и есть Process Hacker -.-«

    Ага, точно! Семён Семёныч…

    Комментарий

  • ManHunter

    Junior Member

    • Регистрация: 11 2006
    • Сообщений: 222

    Сообщение от IOCTL_

    Помню, была какая-то тулза и там были разные кнопки с названиями функций: NtTerminateProcess, ZwTerminateProcess и ещё штук 6 вроде.

    Advanced Process Termination (APT), последняя версия 4.2

    b5bc_18.03.2020_EXELAB.rU.tgz — APT.4.2.zip

    Комментарий

  • IOCTL_

    Junior Member

    • Регистрация: 08 2018
    • Сообщений: 30

    Сообщение от ManHunter

    Advanced Process Termination (APT), последняя версия 4.2

    Ух ты! Кнопочки! Благодарствую!

    Комментарий

  • hiddy

    Junior Member

    • Регистрация: 12 2019
    • Сообщений: 8

    Zombie Processes are Eating your Memory

    Можно попробовать вот эту технику: https://scorpiosoftware.net/2020/03/15/how-can-i-close-a-handle-in-another-process/, но если я не ошибаюсь, вызов NtDuplicateObject вернет ошибку STATUS_PROCESS_IS_TERMINATING.

    Комментарий

  • difexacaw

    Junior Member

    • Регистрация: 07 2016
    • Сообщений: 3150

    Процессы так висли из за каких то глобальных синхронизаций в ядре на младших версиях. Прибить такие процессы можно только ресетив ядро. Антируткиты киляют процессы и что толку если висяк в ядре.

    f13nd

    > Такие процессы появляются если запустить любой процесс с флагом CREATE_SUSPENDED и после этого не стартануть основной тред.

    Может пример будет, а то у меня завершается. Впрочем оно и не может не завершаться, так как все блокировки свободны. Помню глючило на NtSuspendProcess/NtResumeThread.. хотя это можно потестить.

    Теоретически если послать останов поточный и тормознуть такой поток(race), то может что и подвиснет

    vx

    Комментарий

  • dezmand07

    Junior Member

    • Регистрация: 07 2017
    • Сообщений: 64

    Сообщение от difexacaw

    Может пример будет

    Наверное имелось ввиду NtCreateProcess с флагом PROCESS_CREATE_FLAGS_SUSPENDED (0x00000200)
    Если вызвать этот сервис, и дальше ничего не делать с созданным хендлом (не создавать маин поток, не уведомлять csrss и т.д.), а просто закрыть приложение, то хендл так и останется в ядре.
    Такой хендл Диспетчер задач не увидит, но он будет виден например в x64dbg, при этом, насколько помню, отладчик не сможет его закрыть.

    Комментарий

  • difexacaw

    Junior Member

    • Регистрация: 07 2016
    • Сообщений: 3150

    dezmand07

    > просто закрыть приложение, то хендл так и останется в ядре.

    Вся таблица описателей уничтожается при завершении процесса. Интерналс чтоле почитай для начала.

    vx

    Комментарий

Пользователям персональных компьютеров приходится сталкиваться с разными проблемными ситуациями, решить которые иногда затруднительно самостоятельно. Однако, обнаружив ответ на проблемный вопрос, в следующий раз такие задачи уже не кажутся сложными. Завершить процесс, в котором уже нет необходимости, в большинстве случаев может даже новичок. К сожалению, иногда приходится сталкиваться с тем, что, какие бы попытки ни были предприняты, не завершается всё равно процесс в диспетчере задач.

Классический логотип Windows

Узнайте, что делать, если не завершается процесс в Диспетчере задач Windows

Что же делать, когда какой-то процесс «взбунтовался» и не желает подчиниться, как всё-таки осуществить его завершение, можно узнать, если ознакомиться с нашими рекомендациями. Мы поделимся нехитрыми способами, поможем вам овладеть навыками управления всеми процессами, которые запущены на вашем компьютере.

Завершение процессов

Если в процессе работы на компьютере вы стали замечать, что он заметно подвисает, значит, ему тяжело выполнять все возложенные на него задачи. Это происходит, когда вы запускаете множество процессов, а потом их просто забываете остановить.

Конечно, если не увлечься открыванием новых приложений, то с проблемой зависания компьютера удастся сталкиваться реже. Ну а если вы всё-таки очень увлечённо работали, поэтому сами не заметили, как открыли много окон, запустили на выполнение несколько программных приложений и утилит, то закрыть их простым нажатием на кнопку «Выхода», может не получиться.

Алгоритм действий

Для завершения нежелательных процессов, отказывающихся подчиняться пользователю, нужно воспользоваться помощью «Диспетчера задач». Если у вас установлен Windows 7, достаточно кликнуть правой клавишей мышки по нижней панели задач, выбрать параметр «Запустить Диспетчер задач».

Шаг 1

В открывшемся окне на первой вкладке кликните по той утилите, которая вам уже не нужна, а далее в нижней части окна выберите параметр «Снять задачу». Если процесс не совсем безнадёжен, он остановится.

Шаг 2

Можно перейти на вторую вкладку «Процессы», точно также кликнуть по той строке, которая провоцирует в конкретный момент проблемы, а затем нажать на кнопку «Завершить».

Диспетчер задач Windows

Отметьте опцию отображения всех процессов пользователей

К сожалению, даже такие советы иногда для некоторых пользователей оказываются совершенно бесполезными, поскольку всё равно не закрывается процесс в Диспетчере задач.

Если и с вами случилась такая неприятность, вы отчаялись и уже поверили, что единственным выходом из такой проблемной ситуации будет применение вынужденной перезагрузки операционной системы, мы предлагаем вам не паниковать, а ознакомиться с нашими следующими рекомендациями.

Шаг 3

Итак, не произносите фраз типа: «Не могу завершить процесс в Диспетчере задач», а лучше воспользуйтесь уникальными возможностями служебной команды taskkill. Эту команду многие готовы рассматривать в качестве мощнейшего инструмента.

Чтобы запустить такую команду, сначала, конечно же, нужно открыть командную строку, зажав одновременно две клавиши: «Win» и «R». В открывшемся маленьком окошке введите «cmd».

Шаг 4

Теперь вам нужно будет набрать «taskkill» и нажать «Enter». Однако чтобы справиться с неуправляемым процессом к этому слову следует присоединить дополнительную опцию.

В окне наберите слово taskkill и нажмите Enter

В частности, можно завершить процесс при помощи команды taskkill, используя имя приложения, которое отказывается завершаться. Для этого наберите небольшую командную фразу: taskkill / IM «имя приложения». Конечно, вместо словосочетания «имя приложения» вы должны набрать тот процесс, который у вас нет мочи остановить. Например, taskkill / IM excel.exe. Если вы воспользуетесь нашим примером, то в этом случае прекратит работать табличный редактор Excel. Выбирайте ваш процесс, приносящий вам ужасные хлопоты, и прописывайте в команде его имя.

В окне процессы отображаются не только с указанием своего имени, но и идентификатора в том числе. Если вы желаете, вы можете набрать такую командную фразу: taskkill / PID 574, где число 574 будет являться идентификатором проблемного процесса.

Шаг 5

Если на компьютере имеются несколько учётных записей, при этом абсолютно понятно, что зависание возникло именно по причине незавершённых процессов одного из пользователей, можно воспользоваться и такой командной фразой: «taskkill / F / FI «USERNAME eq имя_пользователя». Понятно, что в ней придётся вам самостоятельно изменить непосредственно имя пользователя, по вине которого возникла проблема.

Новая команда taskkill

Воспользуйтесь новой командной фразой

Мы рекомендуем вам потренироваться с использованием таких команд. Если у вас всё получится, вы сможете уходить от вынужденных перезагрузок, которые безжалостно вредят операционной системе.

Команда «taskkill», действительно, является мощнейшим инструментом, которому не могут противостоять даже вирусы и троянцы. Такая команда успешно завершает даже их негативную и упорную «деятельность».

Итоги

Мы уверены, что, ознакомившись с изложенными нами советами, вы сможете впоследствии твёрдо говорить своим знакомым: «Я могу без проблем останавливать работу любой программы, приложения». Овладев такими практическими навыками, вы сможете ещё сильнее «подружиться» с вашим компьютером.

Мне нужно освободить порт 8000, который занят windows .
Пытаюсь остановить по PID:

C:UsersUser>taskkill /PID 4  /F
Ошибка: Не удается завершить процесс с идентификатором 4.
Причина: Отказано в доступе.

После ввода команды netsh http show servicestate выводится:

Код сеанса сервера: FF00000020000001
    Версия: 2.0
    Состояние: Active
    Свойства:
        Макс. пропускная способность: 4294967295
        Таймауты:
            Таймаут тела объекта (сек): 120
            Таймаут тела объекта стока (сек): 120
            Таймаут очереди запросов (сек): 65535
            Таймаут простоя подключения (сек): 120
            Таймаут ожидания заголовка (сек): 120
            Минимальная скорость отправки (байт/сек): 240
    Группы URL-адресов:
    Код группы URL-адресов: FE00000040000001
        Состояние: Active
        Имя очереди запросов: DefaultAppPool
        Свойства:
            Максимальная пропускная способность: унаследовано
            Максимум подключений: 4294967295
            Таймауты:
                Таймаут тела объекта (сек): 120
                Таймаут тела объекта стока (сек): 120
                Таймаут очереди запросов (сек): 65535
                Таймаут простоя подключения (сек): 120
                Таймаут ожидания заголовка (сек): 0
                Минимальная скорость отправки (байт/сек): 0
            Сведения о журнале:
                Каталог журнала: C:inetpublogsLogFilesW3SVC1
                Формат журнала: 0
            Конфигурация проверки подлинности:
                Включенные схемы проверки подлинности:
            Число зарегистрированных URL-адресов: 1
            Зарегистрированные URL-адреса:
                HTTP://*:80/
    Код группы URL-адресов: FD00000040000001
        Состояние: Active
        Имя очереди запросов: ELMA3-CE
        Свойства:
            Максимальная пропускная способность: унаследовано
            Максимум подключений: 4294967295
            Таймауты:
                Таймаут тела объекта (сек): 120
                Таймаут тела объекта стока (сек): 120
                Таймаут очереди запросов (сек): 65535
                Таймаут простоя подключения (сек): 120
                Таймаут ожидания заголовка (сек): 0
                Минимальная скорость отправки (байт/сек): 0
            Сведения о журнале:
                Каталог журнала: C:inetpublogsLogFilesW3SVC2
                Формат журнала: 0
            Конфигурация проверки подлинности:
                Включенные схемы проверки подлинности:
            Число зарегистрированных URL-адресов: 1
            Зарегистрированные URL-адреса:
                HTTP://*:8000/

Подскажите , пожалуйста, как остановить этот процесс?

Понравилась статья? Поделить с друзьями:
  • Ошибка не удается запустить службу bluetooth
  • Ошибка не удается завершить процесс причина отказано в доступе
  • Ошибка не удается запустить приложение поскольку его параллельная конфигурация
  • Ошибка не удается завершить защищенную транзакцию в опере
  • Ошибка не удается запустить плагин