Терминальные услуги:Получить имя клиента При запуске от имени администратора
-
08-07-2019 - |
Вопрос
При обычных обстоятельствах VB.NET мое приложение может проверить переменную среды ClientName, чтобы получить имя рабочей станции, с которой пользователь подключается.
Итак, когда WorkstationX RDPs переходит на сервер:
- Имя компьютера=сервер
- ИмяклиЕнта=WorkstationX
Это прекрасно работает.
Если я щелкну правой кнопкой мыши по приложению и выберу Запуск от имени администратора, переменная ClientName не будет установлена.
Кто-нибудь знает способ легко получить имя рабочей станции клиента, подключенного к серверу терминалов, даже когда приложение запускается через "Запуск от имени администратора"?
Решение
В API терминальных служб возможно, это и есть ваш ответ.Я использую это в приложении VB.NET для выхода из пользовательских сеансов на данном сервере и для получения имен рабочих станций, подключенных к этим сеансам.Код, который у меня есть, содержит много элементов p-invoke и довольно громоздок, но я могу опубликовать его, если вы хотите.
Другие советы
Если вы не хотите заниматься бизнесом P / Invoke самостоятельно, вы можете использовать Кассия, который оборачивает это для вас:
New Cassia.TerminalServicesManager().CurrentSession.ClientName