![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Привет. Хочу чтобы в список попадали Handle и имя файла процесса. Возникли трудности.
Имя файла корректно для всех процессов, но Handle, возвращенный OpenProcess всегда равен либо 0, либо 1976. Не знаю в чем загвоздка. |
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: 1 Всего: 62 |
Главное для процесса - PID, уникальный идентификатор. А хендл для одной и той же проги вполне возможно будет одинаковый. Написал на скорую руку аналогичную программу - тоже пару нулей для системных процессов показывает.
Присоединённый файл ( Кол-во скачиваний: 24 )
proclist.zip 3,78 Kb |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Сишный код, я увы не понимаю. Может есть код на Delphi?
А в чем ошибка у меня? Догадываюсь, что нужно привилегии повышать, я пробовал вставить код для повышения, в результате получил практически тоже самое - почти все нули и одинаковые дескрипторы.
|
|||
|
||||
| rsm |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: 1 Всего: 62 |
К сожалению нету, Delphi не установлен. Да и писать заново не имеет смысла - мой код полностью аналогичен твоему и служит единственной цели - показать, что все написано правильно и это реакция самой системы.
Попробуй прибить юзерский процесс, установив в OpenProcess флаг PROCESS_TERMINATE - он прекрасно прибивается => хэндл вполне даже рабочий. А нулевые хэндлы имеют лишь криически важные системные процессы чтобы их нельзя было случайно прибить. Это сообщение отредактировал(а) rsm - 25.9.2005, 21:01 |
||||
|
|||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
А так система назначает при открытии процесса первый свободный хэндл. При этом ты тут же хэндл закрываешь и этот номер (в твоём случае 1976) освобождается. Следующий вызов OpenProcess опять возвратит 1976, т.к. этот номер свободен... Нули возвращаются из-за того, что нет прав на открытие процесса. Для системных процессов это решается привилегией отладки, странно что она у тебя не помогает... И вопрос: зачем выводить хэндлы ? Хэндлов для одного и того же процесса можно наоткрывать целую кучу, и каждый будет иметь свой уникальный номер... Поэтому не вижу смысла в выводе хэндла... Обычно выводят PID... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Elfix |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Переписал свой код:
Я знаю, что выводить handle бессмысленно, просто в дальнейшем я хочу работать с этими хэндлами, убивать их и т. д. А вывожу я их пока только для того, чтобы проверить действительно ли у меня все работает. Как оказалось нет. В общем мне надо в некоторых системных процессах также получить дескриптор, в частности svchost. |
||||
|
|||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |