Как убить процесс ?

Аватара пользователя
ukms

Как убить процесс ?

Сообщение ukms »

Прелюдия.



Винда 2000. Заходим под админом.





Действие.



Запускаем процесс (например cmd) программой runas от имени пользователя имеющего разрешения на убивание процессов.

Затем запускаем программу убивания. На функции OpenProcess для Id процесса cmd винда нас посылает заковыристым ругательством ERROR_ACCESS_DENIED.

Менеджер задач винды тоже не может убить этот злосчастный cmd.





Эпилог.



HEEEEEEELP !

Есть ли управа ?
Аватара пользователя
vasketsov

Re: Как убить процесс ?

Сообщение vasketsov »

ukms

Есть.

В качестве подсказки напишу SeDebugPrivilege.

Taskmgr эту привилегию себе не включает, потому и не умеет это делать.
Аватара пользователя
AlieNET

Re: Как убить процесс ?

Сообщение AlieNET »

У меня новая информация. Сегодня после экспериментов опять образовалось 3 зависших копии регета. Но я не стал ни на одну из них повторять команду "убить процесс". Команда шла только один раз: когда при открытии новой копии программы предлагалось убить старую - я отвечал close её. После этого я забыл про эти процессы-призраки и вспомнил о них... часов через 6, когда кончился интернет и надо было перезагружать систему: смотрю... - а нету их! Все чистенько. Но висели они от команды close до исчезновения никак не меньше 3 часов.

Самая вероятная версия: это связано с онлайном. Пока ты в онлайне, убить дорвавшийся до него регет до конца нельзя. Стоит из онлайна выйти - становится проще.

Вторая версия: если не долбить повторные команды kill, системе закончить процесс легче, и (всего через каких-то 3-4 часа...) она это сделает.

Но надо будет поэксперементировать.

Все равно странно: другие проги, вроде FlashGet или eMule, порешаются без проблем, независимо от состояния соединения.
Аватара пользователя
vasketsov

Re: Как убить процесс ?

Сообщение vasketsov »

Спасиба !



Интересно, я думал эта привилегия только к отладке имеет отношение...



Будем пробовать.
Аватара пользователя
ukms

Re: Как убить процесс ?

Сообщение ukms »

Похожий вопрос вдогонку.



Под win2000 бывает такая ситуация: хочешь убить подвисший процесс, нажимаешь "снять", и если недождавшись ответа попробовать уже "заказанный" Изображение процесс убить снова, начинается тоже Access Denied, только уже совсем безнадежный: не убить его больше никак.

Обидно: система работоспособность сохранила, а в памяти висит какая-то зависшая хрень и ничего с нею не поделать. Неужели только перезагрузка?



Попробовал следовать подсказке уважаемого vasketsova, нашел в Local policies параметр Debug programs и присвоил себе права на это дело наравне с админом. Но залогинен я в это время был не админом, а собой-юзверем и изменений никаких не заметил: как висело два зависших процесса и ругались на попытку снятия Access Denied - так и продолжали висеть...
Аватара пользователя
AlieNET

Re: Как убить процесс ?

Сообщение AlieNET »

Видать, в моем случае дело не в привилегиях: ведь когда я первый раз командую taskmanager'у выгрузить зависший процесс, он задание принимает(т.е. привилегии есть). Но результатов команды - никаких, и ты пытаешься убить процесс снова. И после этого его уже ничем не проймешь.



Перепробовал:

TaskMan+ v1.5 (замена Taskmanager'у, берущая себе debug-привилегии для убивания процессов, когда залогинен админом)

http://www.diamondcs.com.au/index.php.htm?page=taskman




Kill.exe из Windows 2000 Support Tools - пишет: - ' ' could not be killed



Наконец, pskill.exe - улучшенный вариант kill.exe

http://www.sysinternals.com/ntw2k/fr.../pstools.shtml


Результат один: access denied... Изображение



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

Так вот, может ли в такой ситуации, когда убил процесс, система "задумалась", а ты убил его в это время снова - помочь что-нибудь, кроме перезагрузки?
Аватара пользователя
hasherfrog

Re: Как убить процесс ?

Сообщение hasherfrog »

AlieNET

Вопрос очень интересный, так как его решение может помочь найти защиту от убивания своих процессов. Необходимо уточнение. Что это за процесс? Права пользователя, дающего задание на снятие процесса (админ, адвансед, кастом)?
Аватара пользователя
AlieNET

Re: Как убить процесс ?

Сообщение AlieNET »

hasherfrog

Компьютер только мой, Win2000 Pro SP4, когда я вышеприведеные "убивалки" испытывал, был залогинен админом. Процесс - это ReGet Deluxe 3.3b178, обработанный "волшебной файлочкой" Изображение от ROR'а. У меня стоит ZoneAlarm, и когда ReGet Update пытается выйти в сеть, я ему запрещаю это напрочь(самому regetdx.exe качать разрешено). После очередного "облома" апдейта запустивший его regetdx не может выйти в инет(не висит, но качать не может).



Тогда я запускаю новый регет, появляется окошко, предлагающее закрыть одноименный более ранний процесс(типа: close, retry, cancel). Жму на Close, новый регет запускается и работает без проблем, но старый процесс с таким же именем продолжает висеть в памяти, и ничем его не убьешь!

Иногда доходит до трех копий регета, висящих в процессах.



Может ли окошко access denied означать не отсутствие привилегий(я ж админ?!), а то, что к процессу не пробиться, т.к. он не отвечает - так крепко завис? Ведь когда я жму на close, запуская вторую копию регета, система делает первую попытку убить процесс. После этого я пытаюсь его снять снова и снова, и все время получаю access denied.

Избавляет от этих "призраков" только перезагрузка, а это обидно: система то вполне работает и не тормозит, а выгрузить зависших регетов - не может... Изображение



Добавлено:



Тут что-то связано с тем, что зависающие процессы пытаются выйти в интернет. Помимо случая с регетом у меня недавно был аналогичный с eMule - поставил 5-ую версию ZoneAlarm, и она стала вешать мне осла, а вместе с ним и win2000! Откатился до ZA 4.5 - все работает великолепно. Без участия интернета неразрешимых (без перезагрузки) проблем с Вин2К у себя не припомню.
Аватара пользователя
DubleZero

Re: Как убить процесс ?

Сообщение DubleZero »

AlieNET


Цитата:



поставил 5-ую версию ZoneAlarm, и она стала вешать мне осла,



Точно такая же ситуация. Только я думал, че-то с ослом не то - переставил на более раннюю версию - через какое-то время все то же самое началось - напрочь зависает, спасает только ребут.
Аватара пользователя
hasherfrog

Re: Как убить процесс ?

Сообщение hasherfrog »

AlieNET

Вы не могли бы с помощью PsExplorer (так кажется) от
www.sysinternals.com
посмотреть на ресурсы и свойства процесса Reget (до и после зависания)? Может, что-то прояснится.
Ответить

Вернуться в «Программирование и базы данных»