TerminalServicesManager().CurrentSession.ClientName

Я пытаюсь выяснить, какие клиенты подключены к моей машине с помощью удаленного рабочего стола. Я читал о Cassia и Cassia.TerminalServicesManager, но я не могу обдумать это...

Я думал, что Cassia.TerminalServicesManager().CurrentSession.ClientName даст мне имя клиента, но что если их будет больше? Я посмотрел на ссылки, но я все еще в замешательстве. Кто-нибудь может мне помочь?

Спасибо

2 ответа

Решение

Похоже, вы ищете что-то вроде этого:

var manager = new TerminalServicesManager();
using (var server = manager.GetLocalServer())
{
    server.Open();
    foreach (var session in server.GetSessions())
    {
        if (session.ConnectionState == ConnectionState.Active)
        {
            Console.WriteLine(session.ClientName);
        }
    }
}

ITerminalServicesManager.CurrentSession возвращает сеанс, в котором выполняется текущий процесс.

По умолчанию, если вы подключаетесь к машине под управлением Windows с помощью удаленного рабочего стола, она отключает локального пользователя, а если он снова входит в систему, отключает удаленного пользователя. Если вы включили параллельные сеансы удаленного рабочего стола, то одновременно может быть подключено несколько пользователей. Я не знаком с Cassia, но, возможно, вы могли бы зацикливаться на всех сеансах, вызывающих Cassia.TerminalServicesManager().CurrentSession.ClientName каждый раз?

Другие вопросы по тегам