В моей великолепной задаче я наткнулся на демонстрационную программу по созданию GPO принтера, который отображает принтеры внутри сеанса TS на основе адреса клиента RDP - адрес неизвестен при использовании сервера шлюза :(
Щелкните правой кнопкой мыши + статус сеанса через шлюз удаленных рабочих столов:
То же самое в сеансе, НЕ проходящем через шлюз RD:
Кто-нибудь знает, возможно ли это обойти? Возможно, я могу внести какие-то недокументированные изменения в реестр на сервере шлюза, чтобы передать эту информацию?
Похоже, это невозможно. Я собираюсь подать запрос на добавление функции в Microsoft.
Поскольку шлюз TS фактически является прокси, почему бы вам не запросить логи прокси? Фильтрация по последнему событию 303 из Шлюз удаленного рабочего стола от соответствующего пользователя должен предоставить вам IP. Я не знаю ни одного "X-Forwarded-For"заголовок в стиле RDP.
Я видел это, не знаю, помогает ли это, но действительно хотел передать это на всякий случай.
Возможно, вы могли бы создать сценарий входа в систему, который отображает принтер на основе подключения RDP? Сначала создайте файл «iplist.txt», содержащий IP-адреса и отделы, для которых вы хотите сопоставить принтер:
192.168.0.173,Marketing
192.168.1.173,Sales
192.168.2.173,Finance
Поместите iplist.txt файл в каталоге, к которому входящий в систему человек будет иметь доступ для чтения. Оттуда вы можете использовать этот командный файл для сопоставления принтера:
@echo off
netstat -na | find "3389" | find "ESTABLISHED" > logfile.txt
for /f "tokens=1,2 delims=," %%a in (iplist.txt) do (
for /f %%i in ('findstr %%a logfile.txt') do (
set ip_addr=%%a
)
if "%ip_addr%" == "%%a" (
if "%%b" == "Marketing" (
rundll32 printui.dll,PrintUIEntry /in /q /n \\print_server\marketing_ptr
REM Set as default:
rundll32 printui.dll,PrintUIEntry /y /q /n
goto :end )
if "%%b" == "Sales" (
rundll32 printui.dll,PrintUIEntry /in /q /n \\print_server\sales_ptr
REM Set as default:
rundll32 printui.dll,PrintUIEntry /y /q /n
goto :end )
if "%%b" == "Finance" (
rundll32 printui.dll,PrintUIEntry /in /q /n \\print_server\finance_ptr
REM Set as default:
rundll32 printui.dll,PrintUIEntry /y /q /n
goto :end ) )
)
:end
del logfile.txt
Вы также хотите убедиться, что файл logfile.txt записывается в место, в которое входящий в систему пользователь будет иметь доступ для записи.
Возможно, это не тот рег-хак, который вы ищете, но он может работать как альтернатива ....