Param From Mumbai Ответов: 1

C#, оконная служба для запуска приложения на конкретном вошедшем в систему пользователе.


Привет,

У меня есть служба окон, и я использую ее для запуска моего другого приложения. это прекрасно работает, когда есть один пользователь, вошедший на сервер. но когда несколько пользователей вошли на сервер(jump server), то это приложение открывается в сеансе пользователя, который впервые вошел на сервер.

Я использую класс ProcessExtension и нахожу текущего вошедшего пользователя, а затем запускаю свое приложение из службы окон.

Я хочу, чтобы из сеанса пользователя пришел вызов, чтобы я мог запустить свое приложение в этом сеансе.

Заранее спасибо.

Что я уже пробовал:

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

if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref pSessionInfo, ref sessionCount) != 0)
            {
                
                var arrayElementSize = Marshal.SizeOf(typeof(WTS_SESSION_INFO));
                writeLog("arrayElementSize : " + arrayElementSize);
                var current = pSessionInfo;

                for (var i = 0; i < sessionCount; i++)
                {
                    var si = (WTS_SESSION_INFO)Marshal.PtrToStructure((IntPtr)current, typeof(WTS_SESSION_INFO));
                    current += arrayElementSize;

                   
                    if (si.State == WTS_CONNECTSTATE_CLASS.WTSActive)
                    {
                        activeSessionId = si.SessionID;
                        
                        break;
                    }
                }
            }

1 Ответов

Рейтинг:
2

Param From Mumbai

Спасибо за ваш ответ.
Я пробовал использовать класс, упомянутый в вашей ссылке, но все равно тот же. Я думаю, что проблема заключается в том, что функция WTSEnumerateSessions возвращает всех вошедших пользователей, но она не может дать, какой пользователь выполняет этот процесс.