Значение переменной среды CLIENTNAME неверно после переключения с одного клиента на другого в одном сеансе - PullRequest
0 голосов
/ 07 февраля 2020

Я работаю над настольным приложением, запущенным на удаленном рабочем столе для некоторых пользователей. Несколько системных функций привязаны к физическому местоположению пользователя, что определяется путем просмотра переменной среды CLIENTNAME. Однако, когда пользователь начинает сеанс с WorkstationA, затем отключается от своего сеанса RDP и повторно подключается к нему с WorkstationB, среда процесса не обновляется и продолжает отчитываться о WorkstationB как CLIENTNAME. Я пробовал оба следующих подхода:

System.Environment.GetEnvironmentVariable("CLIENTNAME")
System.Environment.GetEnvironmentVariable("CLIENTNAME", EnvironmentVariableTarget.Process)

EnvironmentVariableTarget.User и EnvironmentVariableTarget.Machine ничего не возвращают в контексте моего процесса. Я заметил, что если вы откроете командную строку в сеансе RDP, а затем переключите подключающиеся машины, уже запущенная командная строка продолжит сообщать о старом значении, а новое, запущенное после коммутатора, сообщит о новом значении.

Увидев это, я попытался создать новый процесс с System.Diagnostics.Process, чтобы запустить команду командной строки, чтобы просто повторить CLIENTNAME обратно ко мне - но, похоже, его среда извлекается из процесса, который его порождает.

Есть идеи? Другие подходы в порядке. Сервер, очевидно, должен знать, какая клиентская машина на самом деле подключена к сеансу, должен быть способ выяснить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...