Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Узнать имя пользователя инициировавшего сеанс RDP (http://forum.oszone.net/showthread.php?t=323632)

R@MZEZzz 08-02-2017 15:17 2710012

Узнать имя пользователя инициировавшего сеанс RDP
 
Необходимо узнать имя пользователя инициировавшего сеанс RDP. Например:
RDP сервер на базе 2012R2, rdp_srv в домене corp.blabla.ru
Удаленные клиенты (рабочая группа) подключаются под доменными пользователями.
Комп Vasya, пользователь Pupkin, подключается к rdp_srv через стандартный mstsc, НО имя пользователя пишет corp\VPup
И работает на сервере под ним..
А мне нужно узнать имя, какое было у него на локальном компьютере - "Pupkin".
Это возможно как то реализовать? Вообще это имя передаётся ли на сервер при RDP подключении?
Подойдет любое решение, будь то скрипт\кусок кода и т.п.
Клиенты разные от winxp до win10. Если будет работать хотя бы с win10 - уже можно считать победой.
Буду признателен любой помощи

Elven 08-02-2017 15:56 2710022

сколь мне известно передается только имя компьютера (%CLIENTNAME%), а почему пользователь не заходит под своей учетной записью?

R@MZEZzz 08-02-2017 16:00 2710023

Цитата:

Цитата Elven
а почему пользователь не заходит под своей учетной записью? »

для этого придется создавать его дополнительно на сервере, а не в домене, а это влечет дополнительную цепочку неприятностей, будь то "прозрачный"(под текущим доменным пользователем) вход в 1с, применение политик на сервере для пользователя и т.д.

Elven 08-02-2017 16:04 2710025

R@MZEZzz, вы не поняли вопрос, если пользователь заходит под своей доменной учеткой (под которой логинился локально) то и переменная %USERNAME% и команда whoami должны вернуть то же самое значение (т.е. одинаковое и на локальной машине и на той к которой он подключился по RDP). по каким причинам они могут не совпадать?

Iska 08-02-2017 16:09 2710031

Нет, тут другой вопрос: почему пользователи работают локально под локальными учётными записями, а не под доменными?!

R@MZEZzz 08-02-2017 16:31 2710035

Elven, Iska,
Пользователи удаленные (другой город) другая сеть, может быть даже другой домен (пока не встречалось)
а заходят на сервер в моём домене через интернет.
Пускать их в VPN или в мой домен нельзя, всё должно оставаться для них как есть на данный момент.
К тому же меняются они довольно часто, 3-5 пользователя в месяц (ротация). Зачем - не спрашивайте, я не вникал, мне лишь нужно настроить..

Цитата:

Цитата Elven
если пользователь заходит под своей доменной учеткой (под которой логинился локально) »

в том то и дело что логинился он с локальной, а заходит с доменной!
и мне с сервера надо узнать имя локальной...

вообще изначальная задача такая: Чтобы подключившийся пользователь, находясь на удаленном рабочем столе видел документы и папки своего родного локального рабочего стола, мог читать и писать в них.
Вручную задача решается сменой в реестре стандартных путей к раб столу\документам\загрузкам и т.д. на пути \\tsclient\c\users\<Имя локального пользователя>\Desktop\ и т.п. Сюда то мне имя и надо, чтобы автоматизировать весь этот процесс.
Можно конечно использовать "обходной" путь:
2 программы (скрипта), одна на клиенте, вторая на сервере.
Клиентская запускается единожды и сохраняет например в корень диска С: пути к Рабочему столу и т.д. в формате \\tsclient\C\users\....
Серверная запускается при логине пользователя, смотрит в его корень С: через \\tsclient\C\.. если есть файл с путями - пишет его в реестр, нет - пишет стандартные значения.
Но самый большой минус в необходимости запускать что то на клиенте. Задача - обойтись без этого.

Elven 08-02-2017 17:13 2710045

Вложений: 1
Я, конечно, не уверен полностью так чтобы совсем, но именно от имени сервера узнать имя локальной учетки вряд ли получится. Разве что делать хитрый финт ушами, заставляя пользователей логиниться как-нибудь вот так:

Код:

echo %username% > //server/share/%computername%
mstsc.exe /v:server

Правда при этом придется расшарить на запись папку для пользователей не своего домена, что смотрится мне крайне нехорошим.

И потом уже в RDP сессии спрашивать, что находится в файле //server/share/%CLIENTNAME% и подставлять в те ключи которые нужно. Если использовать приведенный пример, то приблизительно так:
Код:

for /f %%i in (//server/share/%CLIENTNAME%) do (
echo \\tsclient\c\users\%%i\Desktop\
)

Вообще же при работе с RDS, если моя память не спит с другим, в системе видятся все диски как сервера так и клиента, или как в данном случае предоставляется доступ к RDP?

R@MZEZzz 08-02-2017 23:06 2710146

Elven, ну смысл получается тот же что и я описал.
Но все равно спасибо за уделенное время!

R@MZEZzz 09-02-2017 09:37 2710264

еще одна бредовая идея пришла, попробую так сделать:
программка на сервере, запускается при логине пользователя, сканирует папки пользователя в \\tsclient\c\users\ (или documents and settings)
Ищет в каждой из них (кроме all users и default) подпапку Desktop (Рабочий стол в случае winxp). и подсчитывает кол-во папок\файлов в ней.
Таким образом выделяем из них самую "увесистую", исключая "пустые" профили, что в 90% случаев и будет рабочим столом реального пользователя.
Конечно если пользователь не только что винду поставил и подключается к нам, тут надо экспериментировать...
В общем как вариант, костыль - но вариант :)

Elven 09-02-2017 12:12 2710340

Цитата:

Цитата R@MZEZzz
программка на сервере, запускается при логине пользователя, сканирует папки пользователя в \\tsclient\c\users\ (или documents and settings)
Ищет в каждой из них (кроме all users и default) подпапку Desktop (Рабочий стол в случае winxp). и подсчитывает кол-во папок\файлов в ней. »

От чьего имени запускается такая программа? Пользователь, от имени которого происходит подключение не имеет прав на ресурсы локальной машины, пользователь, залогиненный на локальной машине не имеет прав на ресурсы сервака. Здесь проблема не в написании скрипта, а в выдаче нужных разрешений. Причем я уже запутался где их нужно больше и где они будут кривее.
И еще, каким образом реализован сервер терминалов? Если прокинуть рабочий стол к рабочему столу нет возможности, то предоставить доступ к локальным дискам зачастую не только просто, но и идет "из коробки".


Время: 15:11.

Время: 15:11.
© OSzone.net 2001-