Терминальные услуги:Получить имя клиента При запуске от имени администратора

StackOverflow https://stackoverflow.com/questions/285429

Вопрос

При обычных обстоятельствах VB.NET мое приложение может проверить переменную среды ClientName, чтобы получить имя рабочей станции, с которой пользователь подключается.

Итак, когда WorkstationX RDPs переходит на сервер:

  • Имя компьютера=сервер
  • ИмяклиЕнта=WorkstationX

Это прекрасно работает.

Если я щелкну правой кнопкой мыши по приложению и выберу Запуск от имени администратора, переменная ClientName не будет установлена.

Кто-нибудь знает способ легко получить имя рабочей станции клиента, подключенного к серверу терминалов, даже когда приложение запускается через "Запуск от имени администратора"?

Это было полезно?

Решение

В API терминальных служб возможно, это и есть ваш ответ.Я использую это в приложении VB.NET для выхода из пользовательских сеансов на данном сервере и для получения имен рабочих станций, подключенных к этим сеансам.Код, который у меня есть, содержит много элементов p-invoke и довольно громоздок, но я могу опубликовать его, если вы хотите.

Другие советы

Если вы не хотите заниматься бизнесом P / Invoke самостоятельно, вы можете использовать Кассия, который оборачивает это для вас:

New Cassia.TerminalServicesManager().CurrentSession.ClientName
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top