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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2009, 17:31   #1
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию убить процесс по его идентификатору - Работа с процессами

Вопрос немного не сишный, но все-таки...
Хочу убить процесс по его идентификатору:
Код:
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
if(hProcess)
{
     TerminateProcess(hProcess, 0)
     CloseHandle(hProcess);
}
Но почему-то он даже не открывается. Функция OpenProcess возвращает NULL. Не пойму, в чем дело. Айдишник я проверяла, процесс с таким айдишником существует. Прогу тестирую под админом, так что права должны быть. Завершаю не системный процесс, а обычные Lines и Word.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 04.06.2009, 18:46   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А что GetLastError() возвращает?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 19:47   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Sazary, спасибо за функцию. Я такую даже не знала...
Возвращает 5. То есть ERR_OLD_VERSIONю То есть "Старая версия клиентского терминала".

В общем, я у преподавателя спросила и узнала, что ерундень такая: на компах с Windows XP SP3 функцию надо писать так:
Код:
HANDLE hProcess = OpenProcess(0xfff, FALSE, id);
Что-то там с правами доступа намутили...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 04.06.2009, 19:53   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
на компах с Windows XP SP3 функцию надо писать так:
Хм.. У меня как раз XP SP3, и все закрывается (тестил на калькуляторе).
Да и макроимя уже содержит 0xfff:
Код:
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
Странно..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 20:37   #5
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Прикольно, прикольно.
У меня в студии написано:
Код:
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFFF)
Заметили? 0xFFFF, а не 0xFFF.
Когда в функцию подставляю 0xFFFF - тоже пишет ошибку 5.
Студия у меня 2008. Может, поэтому дефайны разные?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 04.06.2009, 20:45   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от ACE Valery
Студия у меня 2008. Может, поэтому дефайны разные?
Да, наверное ) Вот и доверяй после этого макроименам )

Хотя сейчас глянул в папку со своей студией (2008 - давно ставил) - там в winnt.h также, как и в MinGW:
Код:
#define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
                                   0xFFF)
Вот.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 21:02   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Воть, раскопала вроде
Код:
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
#define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
                                   0xFFFF)
#else
#define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
                                   0xFFF)
#endif
С какого-то перепуга моя винда определяется как >= NTDDI_LONGHORN. Насколько я помню, Лонгхорном вроде называли Висту...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 04.06.2009, 21:22   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Xp шифруется под Висту?

Нашел тут кое-что: http://www.c-plusplus.de/forum/viewt...tart-is-0.html
Правда, там, похоже, на немецком... Тоже проблемы с openprocess и NTDDI_VERSION..

Странно..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 21:51   #9
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

В общем, насколько я поняла, в Висте и иже с ними у нас, программистов, меньше прав?
И это теперь надо иметь в виду...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как убить процесс зная его имя? One.Love Win Api 14 18.02.2012 14:31
Убить процесс, md5, архивация Igoressicus Помощь студентам 1 16.01.2009 10:37
Работа с динамическим массивом и его елементами Padovan Паскаль, Turbo Pascal, PascalABC.NET 2 21.05.2008 20:55
Висит процесс, как его можно убрать? HAMMAN Помощь студентам 5 16.05.2008 08:55
Как завершить процесс, зная его имя Никки Win Api 6 14.01.2008 14:04