Способы проверить, активен ли пользователь на удаленной машине перед RDP

24

У нас есть общая машина с Windows XP, которая используется несколькими пользователями. Все они используют общий домен для входа в него. Теперь проблема в том, что мы иногда переходим к активному сеансу других лиц без предупреждения ни одной из сторон (предупреждение не выдается, поскольку мы используем тот же логин).

Есть ли способ проверить, активен ли текущий вошедший в систему пользователь на удаленном компьютере (терминал заблокирован?) Или нет?

Мы не можем использовать VNC или LogMeIn или другие утилиты для совместного доступа к рабочему столу по соображениям безопасности (заблокированы IT).

Я в порядке разработки некоторой быстрой утилиты для тестирования (C #, C ++, скриптинг и т. Д.).

Редактировать:

  1. Поскольку мы используем тот же логин - пользователи не выходят из системы, они просто отключают или блокируют терминал.
YetAnotherUser
источник
2
Я хотел бы узнать, как сделать то же самое, но в среде Win7.
Дарий
@Darius, только что нашел решение для этого. Не тестировал его на W7, но надеюсь, что это сработает и для вас.
один пользователь
@Darius & YetAnotherUser: я ответил ниже: superuser.com/a/822743/430
Кевин Уортингтон

Ответы:

31

Мы можем использовать qwinstaдля Q uery WIN Dows STA Тион и получить список всех активных сеансов.

Stateстолбец показывает, активен ли пользователь или нет. Для этого требуется доступ администратора на целевой машине.

Получил это на TechTalkz: Как просмотреть / отключить сеансы удаленного рабочего стола из командной строки

введите описание изображения здесь

YetAnotherUser
источник
1
+1 Это удобно. Я пытался выяснить, что я использовал в прошлом, но я не мог понять это. Я думаю, что это могло быть psexec \\COMPUTERNAME net session. Вы также можете использовать tsdisconдля отключения.
парадоид
2

Аналогично принятому ответу вы также можете использовать Query.exeвот так:

quser /server:<COMPUTERNAME>

Это приведет к следующему:

введите описание изображения здесь

Феликс Д.
источник
1
Получение доступа запрещено из командной строки с повышенными правами. Я также использую учетную запись администратора домена.
Шив
Работал хорошо для меня, проверяя, загрузит ли меня RDP-кто-нибудь с сервера Win 2k8 R2. Статус был «Диск» (отключен), так что я могу безопасно сменить RDP.
Adambean
1

Создайте BAT-файл, который сгенерирует файл на общем ресурсе, сообщив, что компьютер используется. Когда пользователь входит в систему, он запускает и создает этот файл. Когда пользователь выходит из системы (это можно сделать с помощью сценария GP), он удаляет файл. Проверьте общий доступ к этому файлу перед подключением

Канадский Люк ВОССТАНОВИТЬ МОНИКУ
источник
1
Извините, я должен был упомянуть, что - поскольку мы используем одинаковый логин - пользователи не выходят из системы, они просто отключают или блокируют терминал.
Ещё один пользователь
1

Вы можете использовать команду NET SEND, чтобы отправить сообщение на устройство, чтобы увидеть, есть ли кто-нибудь на нем. Это можно упростить с помощью приложения с графическим интерфейсом - приведенная ниже ссылка является первой бесплатной, которую я нашел, выполнив поиск в Интернете, поэтому она предоставляется без какого-либо специального одобрения.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_send.mspx

http://www.fomine.com/netsend.html

Linker3000
источник
+1 - Net Send - хороший вариант. Это требует, чтобы другой пользователь ответил, чтобы подтвердить, что он / она использует аппарат, и нужно было бы излишне ждать 4-5 минут, прежде чем предположить, что он не используется. Более того, служба Messenger должна работать на всех системах, что в нашем случае неверно.
Ещё один пользователь
Следует отметить, что NET SEND был правильным ответом на заданный вопрос, ссылаясь на Windows XP, но больше не подходит для текущих версий Windows, так как SEND был удален из NET за явные проблемы злоупотреблений.
Я с Моникой
1

По-другому:

wmic.exe /node:<computername or IP address> computersystem get username

(проверено на Windows 7)

Кевин Уортингтон
источник
Из любопытства, почему, когда я пытаюсь это сделать, я получаю сообщение об ошибке «Отказано в доступе»?
Дарий
Возможно, у вас нет прав администратора на удаленном компьютере.
Кевин Уортингтон
Я чистый администратор, я думаю, что должен, но вы указали мне правильное направление ....
Дарий
Это единственный ответ в списке, который дает возможность указать, какому пользователю подключаться к удаленному компьютеру. Другие, кажется, работают, только если вы находитесь в том же домене и работаете как пользователь с доступом.
LeBleu
0

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

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

Вы можете проверить, отклонено ли это, просмотрев отчеты GPO для локального компьютера под

                  gpreport /h report.html

из административной командной строки.

Норма
источник
1
6 лет, но кто считает
mic84