Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не завершаются процессы, как завершить защищенные процессы 
:(
    Опции темы
Dmitriy2k
Дата 7.4.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.11.2005

Репутация: нет
Всего: нет



Я написал простой диспетчер процессов.
Меня интересовало именно завершение процессов
код:
Код

   HANDLE hProcess;
   // Открываем процесс для его закрытия
   hProcess = OpenProcess( PROCESS_TERMINATE, FALSE, dwProcessID );
  if (!( (INVALID_HANDLE_VALUE == hProcess) || (NULL == hProcess) ))
  //printf( "OpenProcess() failed, err = %lu\n", GetLastError() ); // Ошибка
 {
  TerminateProcess( hProcess, (DWORD) -1 );
  CloseHandle( hProcess );


но процессы закрываются отнюдь не все, а только лишь запущенные пользовательские программы.
как завершить другие процессы?
прошу помощи.
PM MAIL   Вверх
korian
Дата 7.4.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 4
Всего: 17



MSDN вам на шо?
hProcess 
A handle to the process to be terminated. 
The handle must have the PROCESS_TERMINATE access right. For more information, see Process Security and Access Rights.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

TerminateProcess initiates termination and returns immediately. This stops execution of all threads within the process and requests cancellation of all pending I/O. The terminated process cannot exit until all pending I/O has been completed or canceled.

PM   Вверх
Dmitriy2k
Дата 19.5.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.11.2005

Репутация: нет
Всего: нет



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

Если кто с этой проблеммой сталкивался, посоветуйте что нибудь. Или дайте ссылку на исходник. Можно большой и непонятный, но главное чтоб работал.
PM MAIL   Вверх
dumb
Дата 19.5.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



SeDebugPrivilege
PM MAIL   Вверх
xvr
Дата 20.5.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Dmitriy2k @ 19.5.2008,  16:43)
Я смотрел MSDN, манипулировал разными ключами, системные процессы не завершются.
Скачал какой то исходник, где написано, что завершает системные процессы - то же результата не дало - системные процессы он не завершает.

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

Для того, что бы завершать системные процессы надо иметь на это привелегии. Для того, что бы их иметь надо быть системным процессом (под экаунтом LocalSystem, например сервисом). Либо имперсонировать текущий процесс в LocalSystem (не уверен, что это возможно). В общем - копать в MSDN в сторону Impersonate* функций

PS. Есть 2 способа завершать такие процессы вручную:
  •  Из Task Manager'а выбираешь нужный процесс, контекстное меню, Debug. (Должен быть установлен VS). Запускается VS, оттуда делаешь kill
  •  Из командной строки набираешь at <time> /interactive devenv Время должно быть ближайшее. Получаешь VS запущенную под LocalSystem account. Конектишся к процессу, kill

PM MAIL   Вверх
Dmitriy2k
Дата 20.5.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.11.2005

Репутация: нет
Всего: нет



Цитата(dumb @  19.5.2008,  23:55 Найти цитируемый пост)
SeDebugPrivilege 

Кажется это функция из VB

xvr: путь для разбора материала уяснил. спасибо.
PM MAIL   Вверх
dumb
Дата 20.5.2008, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(Dmitriy2k @  20.5.2008,  17:19 Найти цитируемый пост)
Кажется это функция из VB
когда кажется, креститься надо. smile это название привилегии, которую тебе необходимо включить. поиск по этому слову дает исчерпывающие вопрос результаты.
PM MAIL   Вверх
alias_trinity
Дата 29.5.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 10.5.2007

Репутация: 1
Всего: 1



Завершай процес по потоках. Работает 100%.
PM MAIL   Вверх
rrrFer
Дата 29.5.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: нет
Всего: 1



можно system("taskkill ... "): использовать..., про это можешь прочитать в справке по cmd или тут тоже работает на 100%
там есть флажок /f - насильственное завершение процесса  -вот с ним можно и системные вроде как завершать

Это сообщение отредактировал(а) rrrFer - 29.5.2008, 18:50
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.