Узнайте, какой компьютер удаленно подключен к другому компьютеру - PullRequest
1 голос
/ 30 января 2012

У нас есть общая машина под управлением Windows XP Professional, и люди заходят на эту машину, используя удаленный рабочий стол с одним именем пользователя и паролем.Проблема с удаленным рабочим столом Windows состоит в том, что когда другой пользователь входит в систему, текущий пользователь выходит из своего сеанса.Я устал от этого и хотел бы найти способ узнать, кто вошел в систему на этом компьютере, чтобы каждый мог поднять голову друг другу.

После некоторых поисков я нашел решение наStackOverflow с использованием C # пользователь вошел в систему на удаленном компьютере

Однако, поскольку мы используем одно и то же имя пользователя и пароль для входа в систему на общем компьютере, этот метод скажет нам только, что кто-то(общее имя пользователя) вошел в удаленный компьютер, но не кто.Можно ли узнать имя компьютера, подключенного к общему компьютеру?Большое спасибо.

1 Ответ

0 голосов
/ 02 февраля 2012

Вы можете получить эту информацию, используя собственный Win32 API (см. WTSQuerySessionInformation ). Если вы используете язык .NET, вы можете использовать библиотеку Cassia , которая оборачивает собственный API и делает его немного проще в использовании.

Используя Cassia, вы могли бы написать что-то вроде этого:

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

Обратите внимание, что если вы пытаетесь получить удаленный доступ к машине с Windows XP с помощью этого API, вам потребуется установить ключ реестра AllowRemoteRPC и перезагрузить компьютер, прежде чем вы сможете это сделать.

...