Мы должны подключить сервер Windows 2008 с помощью удаленного рабочего стола с компьютера Windows XP. Принтер штрих-кода подключен к машине XP, и принтер используется совместно с сервером в качестве локального ресурса в сеансе RDC.
На сервере мы должны печатать из приложения, которое печатает либо на порт LPT, либо на общий принтер (путь UNC). Для этого я использую для настройки пула печати, объединяющего LPT1 и (Терминальный сервер) порт TSxxx. Поскольку я не знаю, как получить доступ к принтеру терминальной сессии через UNC-путь.
Но у меня есть следующие проблемы -
Каждый раз, когда я подключаюсь к удаленному сеансу, принтер с моего локального компьютера Win XP отображается в разделе «Принтеры и факсы» на сервере Win 2008 (сервер терминалов), но мне не разрешено управлять принтером Win XP с сервера терминалов, чтобы включить пул. На сервере мне каждый раз приходится менять разрешение безопасности, а затем включать пул печати. Как я могу сохранить разрешение безопасности неизменным?
Во-вторых, я создал командный файл, чтобы включить пул печати.
rundll32 printui.dll, PrintUIEntry / Xs / n "Принтер (от КЛИЕНТА)" Имя порта "LPT1:, TS005"
Но каждый раз, когда принтер в терминальном сеансе подключается к другому терминальному порту сеанса. Любое решение, чтобы исправить порт TS?
Мы будем очень благодарны за помощь от кого угодно.
Вы не можете получить параметры, которые вы просите «исправить», поскольку принтеры удаляются и воссоздаются заново при каждом отключении / подключении сеанса. Очевидно, что изменение приложения выглядит как самое чистое решение. Если его нельзя изменить, вы, очевидно, можете написать сценарий для решения проблемы, чтобы облегчить боль:
вы можете изменить разрешения вашего принтера с помощью subinacl /printer
синтаксис в скриптах
вы можете получить порт принтера, сначала получив свой идентификатор сеанса (например, используя quser
), построив имя принтера ("Printer (redirected <SessionID>)"
) и скармливает его чему-то вроде cscript %WINDIR%\System32\Printing_Admin_Scripts\<Language>\prncnfg.vbs -g -p "Printer (redirected <SessionID>)" | find "Portname"
Если ваш компьютер с Windows XP доступен через SMB с терминального сервера, вы, очевидно, можете просто предоставить общий доступ к принтеру и использовать \\%clientname%\<printer>
обозначение, но вы, вероятно, уже думали об этом и отклонили его по той или иной причине.
Требование:
Условия:
Рассмотренные шаги:
Ссылки и инструменты:
%WINDIR%\System32\Printing_Admin_Scripts\<Language>\prncnfg.vbs
)Партия:
REM Begin of the script
REM Find out Session ID of Current RDC User using QUSER
QUSER CurrentTSUsername | FIND "CurrentTSUsername" > TSPrn_tmp.txt
FOR /F "tokens=1-3 delims= " %%i IN ('Type TSPrn_tmp.txt') DO SET TSID=%%k
REM Generate Printer name combining Printer name on Client and Terminal Session ID
SET PRINTER="ClientPrinter (redirected %TSID%)"
REM Grant ownership and Printer Manage Permission to current TS user using SETACL
SETACL -on %PRINTER% -ot prn -actn setowner -ownr n:CurrentTSUsername
SETACL -on %PRINTER% -ot prn -actn ace -ace "n:administrator;p:full"
REM Find out Terminal Session TSxxx port on which the printer mapped using Prncnfg.vbs
cscript %WINDIR%\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs -g -p %PRINTER% | find "Port name" > TSPrn_tmp.txt
FOR /F "tokens=1-3" %%i IN ('TYPE TSPrn_tmp.txt') DO SET TSPORT=%%k
REM Enable Printer pooling combining LPT port and the TS Port
rundll32 printui.dll,PrintUIEntry /Xs /n %PRINTER% Portname "LPT1:,%TSPORT%"
REM Delete the Temp txt file
del TSPrn_tmp.txt
REM end of the script