Службы терминалов: получение имени клиента при запуске от имени администратора - PullRequest
2 голосов
/ 13 ноября 2008

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

Итак, когда рабочая станция RDP переходит на сервер A:

  • ИмяКомпьютер = ServerA
  • ClientName = WorkstationX

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

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

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

Ответы [ 2 ]

2 голосов
/ 09 апреля 2009

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

New Cassia.TerminalServicesManager().CurrentSession.ClientName
2 голосов
/ 14 ноября 2008

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

...