Вверх ↑
Этот топик читают: Гость
Ответов: 1342
Рейтинг: 31
#1: 2017-09-10 02:34:06 ЛС | профиль | цитата
помогите разобраться с функцией DuplicateHandle
верно ли я понимаю, что в следствии отработки этой функции, можно поменять ParrentID процесса или, что то путаю, и как это можно сделать, подменить родителя
к примеру есть Prog1.exe и Prog3.exe
Prog1.exe запустит Prog2.exe
Prog2.exe будет иметь ParrentID равный ID Prog1.exe
и сам вопрос можно ли переназначить ParrentID Prog2.exe на ID Prog3.exe
карма: 2

0
vip
#1.1контекстная реклама от партнеров
Ответов: 2059
Рейтинг: 131
#2: 2017-09-10 10:33:45 ЛС | профиль | цитата
Rysik,
1. Правильно я понимаю, что Prog3.exe это "левая" программка не сделанная тобой, или сделанная в Hiasm?
2. Что нужно получить в конечном итоге? Переназначить каналы ввода вывода, обмен данными через эти каналы, или чего-то ещё – контроль доступа, права, наследование?
3. И конечно Prog3.exe уже запущенный процесс, или его можно запустить после (из) Prog1.exe?
4. Может быть вот это https://habrahabr.ru/post/180933/ надо?


Создание процесса ОС Windows

В ОС Windows процессы создаются через системный вызов NtCreatProcess() – данный вызов имеет множество параметров, многие из которых «по умолчанию».

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

Хэндл процесса – существительное (дословно переводится «ручка»). Это сущность доступа к процессу – некоторое целое число, которое является индексом в определенной таблице и позволяет идентифицировать этот процесс – контроль доступа, права, наследование.

Pid – это смещение (индекс) в таблице процессов.

Иерархия процессов в ОС Windows

Ее нет, все равны. Поэтому встает вопрос взаимодействия.

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

Этот хендл может передаваться другим процессам, в отличии от Unix, где родительский процесс не может менять множество дочерних процессов.

Хэндл процесса – идентификатор объекта процесса.

То отвечая прямо на вопрос можно ли переназначить - да можно, но не вместо Prog2.exe. (при убивании процесса Prog2.exe...)
Как? Это другой вопрос.
Потому, что у Prog3.exe есть свой цикл обработки сообщений. Он крутится в ЕЁ адресном пространстве. А у твоей Prog1.exe свой цикл. И крутится он в ТВОЕМ адресном пространстве.
Несколько раз встречал решение в интернете, но не нужно было.

Редактировалось 11 раз(а), последний 2017-09-10 14:08:27
карма: 6

0
Ответов: 1342
Рейтинг: 31
#3: 2017-09-10 14:52:28 ЛС | профиль | цитата
вобщем что такое дублирование, это уже понял, полезная штукенция), но чуток не то, сама суть даёться через CreateProcess c указанием startupinfoex

--- Добавлено в 2017-09-10 15:29:59

flint2 писал(а):
4. Может быть вот это https://habrahabr.ru/post/180933/ надо?


нет, скрывать процесс не нужно

--- Добавлено в 2017-09-10 15:31:02

внизу темы есть инфа небольшая по поводу вопроса
https://habrahabr.ru/post/335736/

Редактировалось 2 раз(а), последний 2017-09-10 15:31:02
карма: 2

0
Ответов: 2059
Рейтинг: 131
#4: 2017-09-10 15:31:24 ЛС | профиль | цитата
Rysik,
До кучи
Может интересно будет https://habrahabr.ru/post/335736/

Редактировалось 1 раз(а), последний 2017-09-10 15:32:30
карма: 6

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)