Создание удаленного потока в процессе с другой сессией
От: Polonius Россия  
Дата: 06.10.04 11:42
Оценка:
Проблема такая:
Хотелось бы создать (с помощью CreateRemoteThread()) поток в процессе, сессия (session ID) которого отлична от моей.
Я подключаюсь к удаленному рабочему столу (Win2K) под акком Админа и получаю сессию отличную от той, которую имеет нужный мне процесс
(системный, уже запущен).


По этому поводу в MSDN есть инфа :

Terminal Services: Terminal Services isolates each terminal session by design. Therefore, CreateRemoteThread fails if the target process is in a different session than the calling process.javascript:AddTag(' ','')



Вопрос: есть ли возможность запустить, сразу, мое приложение чтобы процесс приложения получил нужную сессию?
если это в принципе не возможно, то поделитесь идеями...javascript:AddTag(' \ ','')
Дайте мне точку входа, и я переверну мир.
Re: Создание удаленного потока в процессе с другой сессией
От: SergH Россия  
Дата: 06.10.04 11:53
Оценка:
Здравствуйте, Polonius, Вы писали:

P>Вопрос: есть ли возможность запустить, сразу, мое приложение чтобы процесс приложения получил нужную сессию?


Есть. CreateProcessAsUser, обрати внимание на первый параметр.
Делай что должно, и будь что будет
Re[2]: Создание удаленного потока в процессе с другой сессие
От: Polonius Россия  
Дата: 08.10.04 07:12
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Есть. CreateProcessAsUser, обрати внимание на первый параметр.


В скором времени попробую разобраться с этим. Полазил по форуму, проблем с подобными вещами (CreateProcessAsUser) много у кого возникало.

Как только будут какие-либо сносные результаты — поделюсь..
Дайте мне точку входа, и я переверну мир.
Re[3]: Создание удаленного потока в процессе с другой сессие
От: Polonius Россия  
Дата: 22.10.04 10:02
Оценка:
P>В скором времени попробую разобраться с этим. Полазил по форуму, проблем с подобными вещами (CreateProcessAsUser) много у кого возникало.
P>Как только будут какие-либо сносные результаты — поделюсь..

После некоторых изысканий оказалось, что напрямую этого сделать нельзя.
Я воспользовался таким вариантом (если кто знает лучший пишите...):
1. Пишется System Service
Этот сервис запускается из под LocalSystem (для этого нужны сответсвующие права (Админа например)).
У процессов порожденных LocalSystem sessionID равна 0 (как раз то, что нужно),
следовательно у процесса сервиса будет sessionID тоже 0. Далее уже процесс сервиса создает удаленный поток в нужном
процессе с sessionID 0 (мне был нужен системный процесс).

2. Из под Terminal Service запускается мое приложение.
Оно создает и запускает мою службу.
Подаю команду ( как это сделать? — здесь возможных реализаций не мало, это другая тема) службе на создание удаленного потока.


Проблема:
так как приходится создавать и работать со службой, а это достаточно специфичная штука, то все оказывается не так просто как хотелось бы
Дайте мне точку входа, и я переверну мир.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.