Назад | Перейти на главную страницу

Сервер 08 RDP: можно ли предупредить, если тот же пользователь уже подключен?

В настоящее время мы занимаемся разработкой и мониторингом более 1 учетной записи RDP (администратора) на машине server 2008 r2, так как каждый должен использовать один и тот же экземпляр для обеспечения согласованности. Проблема в том, что пока один человек подключен и работает, если кто-то другой попытается подключиться, используя ту же учетную запись, он отключит первого человека и уступит управление второму. Единственное предупреждение приходит слишком поздно, когда первый человек получает сообщение «Другой пользователь подключился к удаленному компьютеру, поэтому ваше соединение было потеряно».

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

Плохие новости для вас: Невозможно заставить RDP предупреждать вас, когда вы собираетесь войти в существующий сеанс. Он только предупреждает, когда вы собираетесь войти через RDP и другой пользователь уже вошел в систему. грустное лицо


Подождите ... теоретически это возможно с помощью удаленного сценария. Вы можете использовать query команда и user возможность получить список вошедших в систему пользователей. Затем вы можете найти интересующее вас имя пользователя и посмотреть, ACTIVE тег находится в STATE столбец. Оттуда вы можете вызвать файл .rdp, если пользователь не вошел в систему, или отправить диалоговое окно с предупреждением, если пользователь является вошел.

Он самодельный, но должен работать.

Пример с одного из моих серверов Windows:

C:\Users\BigKahuna>query user
 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>BigKahuna          rdp-tcp#0           1  Active          .  3/26/2012 6:51
PM

Этот сценарий vbs можно использовать, чтобы не выгнать кого-то, кто уже вошел на сервер Windows под тем же именем пользователя:

Set objShell = WScript.CreateObject("WScript.Shell")
Set p = objShell.Exec("qwinsta /server:serverName")
Do While p.Status = 0
    WScript.Sleep 100
Loop
If InStr(p.StdOut.ReadAll, "Active") <= 0 then objShell.Run("mstsc C:\Users\username\Documents\Default.rdp")

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