Пожалуйста помогите. Стоит следующая задача.К компьютеру подключаются пользователи с помощью rdp клиента. Для каждого подключенного клиента я получаю список процессов:имя,ид сессии, PID,user name,domain name. Для подключения к серверу клиент может использовать два способа подключения:терминальный и консольный. Если список процессов пользователей я получил, то как можно понять каким образом пользователь подключился к удалённой машине, т.е. необходимо найти способ проверить в какой сессии загружен тот или иной процесс.
csmok я получаю ... ид сессии Код (Text): WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, ид сессии, WTSClientProtocolType, ...
Возникли проблемы. В начале смотрел было в порядке, а потом заглянул, а моя прога не видит саму себя в терминальной сесси как от этого избавиться?
csmok моя прога не видит саму себя в терминальной сесси А она запускается из терминальной сессии? Видна ли она если для получения списка процессов использовать tool help api или psapi?
Когда я решил запустить копию программы, то копия обнаружила процесс запущеный перед вторым запуском. Насчёт второго вопроса тоже да.Проверял с помощью ToolHelp'a всё нормально отoбражается.
csmok Я запутался (надо было продолжать в Терминальные серверы и список процессов.). В чем заключается проблема? Собрать разную информацию по процессам? При помощи Tool help API получаешь список процессов. При помощи ProcessIdToSessionId получаешь SessionID. Используешь ее для получения информации через WTSQuerySessionInformation.
Задача состоит в получении всех процессов и определении в какой сессии данный процесс запущен.Проверка в какой сессии запущен процесс кажется я реализовал. Почему кажется потому, что не до конца проверил свои догадки,которые заключаются в том, что все консольные процессы запускаются в сессии с ид 0, сюда же можно отнести процессы с ид сесси 2, так как они как я не тестировал всегда содержали один и тот же набор процессов.Остальные процессы имеют отличные id сессий. Но оказалось, что список не полный так как нет самой программы, которой этот список получаю.
Хотел задать вопрос по поводу функции. Меня Интересуют какие параметры необходимы, в основном они все понятны за исключением WTSClientProtocolType.Также меня интересует структура WtsSessionInfo как её определить, что для этого необходимо.
что за ерунда? если нужно просто защититься от повторного запуска в одной сессии, можно, наверное, сделать и попроще
Возможно. Мне просто скорее всего пока не хватает опыта. Но я просто другого выхода не вижу. Просто есть список модулей допустимых только в консольной сессии и список модулей в терминальной сессии.
Прошу прощения за свои глупые и путаные вопросы и уточнения. Сел пересмотрел весь код и нашёл у себя баг. Проблема окозалась и ничего не стоит. Ещё раз прошу прощения и спасибо за помощь.