Как узнать, кто в данный момент вошел в систему через VNC

0

У нас работает машина с Windows XP Pro, к которой несколько человек подключаются через VNC (RealVNC). Каждый пользователь входит в Windows под своей учетной записью. Мы все хотим быть вежливыми с другими пользователями и подключаться только тогда, когда никто другой не пользуется машиной. Если кто - то будет использовать его , я хочу , чтобы выяснить , кто (то есть. , Что Windows , пользователь вошел в систему ) , так что я могу спросить их , когда они , вероятно , чтобы закончить. Вопрос в том, как мне это выяснить?

В настоящее время мы в первую очередь пытаемся подключиться через RDP, чтобы он подсказал нам: «Пользователь SmithJ в данный момент вошел в систему. Вы хотите выйти из системы?» Мы отвечаем «Нет», но теперь мы знаем, что это использует Джон Смит. Это работает, но это немало лишних хлопот - вам нужно запустить удаленный рабочий стол, выбрать машину, ввести свой пароль. Есть ли способ сделать это с помощью самого VNC?

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

Прежде чем кто-то спросит, нет, мы не можем просто использовать RDP - сеанс должен выглядеть как «интерактивный» сеанс. Однако, если есть альтернативные продукты для VNC, которые могут это сделать, мне было бы интересно узнать о них.

EMP
источник

Ответы:

1

Исходя из:

echo% USERNAME%> CurrentLoggedIn.txt

Похоже, что в Windows XP и более поздних версиях есть переменная окружения "SESSIONNAME", которая установлена ​​в "Console" для сеанса входа в консоль.

Я не уверен, что он установлен для сеанса RDP (удаленного рабочего стола). Если отличается, вы можете использовать это в командном файле как средство определения, должен ли обновляться магический файл или нет.

Немного уловок при таком подходе: вам нужно также удалить этот файл при выходе из консоли.

quickly_now
источник
Хм, вы могли бы что-то здесь! Я не уверен, что этого достаточно, чтобы решить проблему, но +1.
EMP
0

Похоже, использование psloggedon.exe от Sysinternals будет вашим лучшим выбором. Просто запустите простой командный файл или что-то в этом роде, и он скажет вам, кто вошел на удаленный компьютер. Если у вас есть несколько пользователей через RDP и консоль, попробуйте использовать, net sessions \\computerи это вернет все сеансы RDP на этом удаленном компьютере.

Дэвид Реми
источник
Хорошая идея, но она показывает, что два пользователя вошли в систему «локально», и я не знаю, кто из них является интерактивным, а какой имеет сеанс удаленного рабочего стола.
EMP
Устаю, и я не могу думать об этом, но используйте psexec, чтобы выполнить команду, которую я не могу вспомнить (вот где наступает время ночи), чтобы найти вошедшие в систему номера сеансов, которые должны сделать это для вас. Я попробую проверить утром и посмотреть, помню ли я, как это сделать.
Дэвид Реми
0

Вы можете подключиться к другому компьютеру или использовать psexec и выполнить команду

Может выполнить скрипт, который выполняет netstat -aon на сервере и смотрит на IP и. затем есть другой файл с IP-адресами и именами пользователей, по одному на строку. найдите строку с этим IP, и она отобразит строку с именем пользователя.

или же

Каждый клиент может использовать psexec для записи файла на C: \, в котором указано его имя.

Чтобы выяснить, кто использует компьютер, когда он используется, вы можете запустить скрипт, который отображает, что находится в этом файле.

barlop
источник
Извините, но я не думаю, что любое из этих решений является хорошим. Windows уже знает, кто вошел в систему, и мне просто нужно как-то спросить.
EMP
в этом случае вы хотите удаленно выполнить это на компьютере, и вы увидите, кто пользователь. C: \> echo% USERPROFILE% <ENTER>, тогда он будет отображать что-то вроде C: \ Documents and Settings \ Charlie
barlop
Хм .. мой echo% userprofile% не будет работать, потому что psexec входит в систему только от того, какой пользователь вошел в систему как пользователь, который в данный момент находится на локальном компьютере, или пользователь / пароль, который вы указали как используется на удаленной машине.
Барлоп
Пытаясь понять ваш вопрос ... «мы не можем просто использовать RDP - сессия должна казаться« интерактивной »сессией». Будет ли «интерактивный сеанс» определяться как подключение удаленно, а не напрямую? Как вы можете иметь сеанс с RDP, который не выглядит интерактивным. Разве сеансы VNC и RDP не будут интерактивными и не будут отображаться как таковые?
Барлоп
Кроме того, с psloggedon он дает время ... так что, если он показывает два, то, возможно, более раннее время будет локально вошедшим в сеанс, а интерактивный сеанс будет последним?
Барлоп
0

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

echo% USERNAME%> CurrentLoggedIn.txt

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

user53654
источник
Да, но это будет работать независимо от того, вошли они в систему локально или удаленно, не так ли?
EMP