Ответ 1
Ниже приведено упрощение, если вы запрашиваете от клиента Windows, присоединенного к тому же домену, что и запрашиваемая система, и могут требовать определенные права выше и выше обычного пользователя домена. Если вы столкнетесь с проблемами аутентификации/разрешения, это будет первое, что я проверил.
Существует инструмент, доступный по крайней мере еще в Windows XP под названием "qwinsta". Более поздние версии Windows имеют как qwinsta, так и "сеанс запроса".
qwinsta /server:computer01
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console 0 Conn wdcon
rdp-tcp 65536 Listen rdpwd
administrator 2 Disc rdpwd
Это показывает, что пользователь "администратор" зарегистрирован, но отключен. Так как в этом примере computer01 представляет собой систему Windows Server 2003 с лицензией RDP по умолчанию "администрирование", там второй сеанс прослушивает кого-то для подключения.
Повторное выполнение этой же команды после подключения к ранее отключенному сеансу выглядит следующим образом:
SESSIONNAME USERNAME ID STATE TYPE DEVICE
[unchanged output removed]
rdp-tcp#25 administrator 2 Active rdpwd
Этого достаточно, чтобы ответить "кто-то в настоящее время активен через RDP", и если вы используете индивидуальные имена пользователей, он должен также ответить "кому". Если вы все используете "testuser" или "administrator" или что-то еще, вы, вероятно, захотите узнать ответ "от какого клиента", и это не указано выше.
Вышеприведенный дает быстрый базовый ответ без дополнительных инструментов. Для получения более подробной информации вы можете посмотреть cassia library или PSTerminalServices (построена на кассии). См. Некоторые ответы в этом вопросе для более подробной информации.
Моя первая мысль заключалась в том, чтобы использовать инструменты Sysinternals, такие как PsLoggedOn или LogonSessions. Затем я нашел ссылку на инструменты qwinsta и rwinsta, ранее неизвестные мне, в этот пост в блоге с 2003 года.