Я использую BgInfo на сервере Windows, к которому пользователи подключаются удаленно через RDP. BgInfo позволяет создавать пользовательские элементы на основе запросов WMI. Я хотел бы показать локальное имя пользователя или IP-адрес. Существует ли класс WMI, содержащий имя локального хоста удаленно подключенного пользователя? Иначе, есть ли еще один шаг в BgInfo, чтобы получить эту информацию?
2 ответа
Не решение WMI, но проще: если вы выполняете следующий скрипт на сервере при подключении по RDP, вы получите имя хоста удаленного компьютера, подключенного по RDP
@echo off
echo %CLIENTNAME%
exit
На самом деле вам не нужен скрипт, так как bginfo
позволяет использовать настраиваемое поле.
Перейдите в пользовательские поля-> добавить новое поле, выберите Environment variable
и добавьте переменную = CLIENTNAME
Насколько я знаю, WMI не может этого сделать.
Вам нужно будет использовать Win32 API, например, в PowerShell, и напрямую вызывать функцию WTSQuerySessionInformation , находящуюся внутри wtsapi32.dll
, используя параметры:
hServer = WTS_CURRENT_SERVER_HANDLE (null or 0)
SessionId = WTS_CURRENT_SESSION (-1)
Вы можете найти работающий пример PowerShell для вызова WTSQuerySessionInformation
в этом ответе о сбое сервера, с которого следует начать.
Элемент, который вы хотите получить, - это WTSClientName
из перечисления _WTS_INFO_CLASS, содержащее « Строку с нулевым символом в конце, содержащую имя клиента», что означает имя клиентского компьютера.
Как его получить также продемонстрировано в приведенном выше примере.