Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.11.2010, 18:24
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию Handle чужого процесса

Необходимо получить handle чужого процесса на терминальном сервере, ну и впоследствии произвести несколько действий, используя этот handle.

OpenProcess возвращает только мои процессы, чужие возвращают ноль:
Код:
newHandle := OpenProcess(PROCESS_ALL_ACCESS, false, proc_ID);

Может кто натолкнет на верную мысль? Ну и вообще это возможно?
Ответить с цитированием
  #2  
Старый 16.11.2010, 19:03
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

enumProcess?
Ответить с цитированием
  #3  
Старый 16.11.2010, 20:47
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Диспетчер задач же как-то это делает
EnumProcesses, получишь массив processID, а дальше открываешь нужный и работаешь.
OpenProcesses+GetModuleFileName(вроде как-то так) - получишь имя EXE файла для каждого процесса. Можно использовать для распознавания
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 17.11.2010, 09:53
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

enumprocess вернет PID, а я его уже знаю:
Код:
result := FProcessEntry32.th32ProcessID;
И мне теперь нужен handle, который я и пытаюсь получить в OpenProcess- вот тут и возникает вопрос. А вопрос все тот же:
Я на терминале под админской учеткой, вижу свои и чужие (запущенные другими пользователями) процессы. На свои процессы я получаю handle, а на чужие OpenProcess возвращает ноль (т.е. не может получить handle).

Кто- то может знает как же получить именно хэндл (если это вообще возможно)?

З.Ы. закрадывается мысль, что именно хэндл чужого процесса получить "невозможно".
Ответить с цитированием
  #5  
Старый 17.11.2010, 11:12
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Почитав интернеты, стало проясняться, что, скорее всего, без внедрения в чужой процесс своей dll тут не обойтись.
Если кто- то знает, что это не так- прошу отписаться о своих мыслях на этот счет.
Ответить с цитированием
  #6  
Старый 17.11.2010, 11:17
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Странно. У меня
Код:
prc := OpenProcess(PROCESS_ALL_ACCESS, false, prcID);
работает отлично. Из 163 процессов 163 получает нормально.

хотя, может, там и не было процессов других юзеров...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 17.11.2010 в 11:26.
Ответить с цитированием
  #7  
Старый 17.11.2010, 12:07
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, prcID);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 17.11.2010, 14:36
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Bargest да, скорее всего, нет процессов других пользователей. Свои процессы проходят на УРА.
NumLock спс, но это не работает. Изменение типа доступа ничего не меняет.

Подозрение усилилось, что без CreateRemoteThread и LoadLibrary управлять чужим процессом не выйдет.

Последний раз редактировалось TOJluK, 17.11.2010 в 14:40.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter