Войти

Показать полную графическую версию : Настройка принтеров


v.arnautov
03-04-2017, 11:25
Здравствуйте. Ситуация такая, есть терминальный сервер с подключенными к нему несколькими принтерами, можно ли выставить разные принтера по умолчанию для пользователей, т.е. для каждого пользователя свой принтер по умолчанию не входя в уз пользователей?

Angry Demon
03-04-2017, 11:46
Установка принтера по умолчанию (http://forum.oszone.net/post-587610.html)

Также rundll32 printui.dll,PrintUIEntry /y /n<имя принтера> назначает принтер по умолчанию.

v.arnautov
03-04-2017, 13:34
как я понял скрип надо выполнять от каждой учетки, а мне нужно чтобы допустим от уз Администратор я мог назначить принтер каждому сотруднику свой. А то учетных записей далеко не 5 шт и подключаться к каждой и настраивать нужный принтер не хочется.

Angry Demon
03-04-2017, 14:13
v.arnautov, что такое папка Автозагрузка в профиле слыхали? Положить в неё скрипт, думаю, сможете без подключения к учёткам.

Iska
03-04-2017, 14:39
Да даже тупо в общую автозагрузку можно, если единый пакетный файл/скрипт в виде:
if "%ComputerName%" equ "TerminalServer" (
call :Label%UserName%
)

exit /b 0

:LabelVasya
rundll32.exe printui.dll,PrintUIEntry /y /nHPLaserJet5
exit /b

:LabelPetya
rundll32.exe printui.dll,PrintUIEntry /y /nHPLaserJet5
exit /b

:LabelKolya
rundll32.exe printui.dll,PrintUIEntry /y /nHPLaserJet6
exit /b
хоть и не комильфо.

v.arnautov
03-04-2017, 14:48
а через реестр этого сделать нельзя?

Iska
03-04-2017, 14:50
Делайте.

v.arnautov
03-04-2017, 14:55
сообщите путь где смотреть в реестре

Iska
03-04-2017, 15:13
Кто-то тут только что, пару часов назад, писал:
А то учетных записей далеко не 5 шт и подключаться к каждой и настраивать нужный принтер не хочется. »
Что побудило Вас не просто внезапно решиться, но и выбрать ещё более длинный путь («Ты, слышь, Вась, по-моему и до аэродрома не далеко…» ;))?!

Ну, коли семь вёрст не крюк, смотрите:
Registry entries for printing (https://support.microsoft.com/en-us/help/102966/registry-entries-for-printing)
Where in the registry is the default printer set? | Windows Server content from Windows IT Pro (http://windowsitpro.com/windows-server/where-registry-default-printer-set)

shevgenius
03-04-2017, 15:23
Iska, через пакетный файл палим список пользователей, зато удобно в одном файле сразу видно, кому чего назначили.

v.arnautov, готовое решение с rundll32.exe printui.dll,PrintUIEntry в автозагрузку. :ok:

Можно еще с предпочтениями сделать: 2008 R2 - [решено] Назначить принтер по умолчанию GPO

А если пользователи с терминала и со своего компьютера печатает на одни и те же "умолчанные" принтеры, тогда перенаправление принтеров с компьютера пользователя.

v.arnautov
03-04-2017, 15:25
а писать для каждого скрипт и ложить его в автозагрузку это ближе?

этих принтеров на локальных машинах нет

Iska
03-04-2017, 15:31
Iska, через пакетный файл палим список пользователей »
shevgenius, попробуйте выполнить под обычным пользователем net.exe user и net.exe user /domain (при наличии домена). Что будет?

а писать для каждого скрипт и ложить его в автозагрузку это ближе? »
Есть множество способов назначения умолчального принтера. Ваш последний выбор (ручками через реестр для каждой из учётных записей пользователей) — наихудший из них.

v.arnautov
03-04-2017, 16:01
if "%ComputerName%" equ "TerminalServer" (
call :Label%UserName%
)

exit /b 0

:LabelVasya
rundll32.exe printui.dll,PrintUIEntry /y /nHPLaserJet5
exit /b

:LabelPetya
rundll32.exe printui.dll,PrintUIEntry /y /nHPLaserJet5
exit /b

:LabelKolya
rundll32.exe printui.dll,PrintUIEntry /y /nHPLaserJet6
exit /b

вот это хорошая идея,но имена компьютеров неизвестны, у них случайные имена, половина пк работают на Маке половина на Убунту. можно как-то изменить чтобы работало только для уз? а то не силен в этой теме

shevgenius
03-04-2017, 16:13
Хотя в условии не было озвучено, есть ли у вас домен или нет, но через групповые политики на "Вход в систему" оно было бы правильнее.
v.arnautov, пишите один пакетный файл сценария примерно такого содержания, можете взять вариант Iska, чей больше понравится:



@echo off

rem перебираем пользователей
if /i "%username%" equ "user1" goto linkPrint1
if /i "%username%" equ "user2" goto linkPrint2
goto allend

:linkPrint1
rundll32 printui.dll,PrintUIEntry /y /n "SharePrinterName"
goto allend

:linkPrint1
rundll32 printui.dll,PrintUIEntry /y /n "SharePrinterName"
goto allend

:allend



Добавляете на терминальном сервере в C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

Что будет? »
не порядок, надо залатать

v.arnautov
03-04-2017, 16:16
DC есть, на нем дается доступ к принтерам для учеток

if /i "%username%" equ "user2" goto linkPrint2 тут не понятно чутка, %username% - это имя учетки например Petya так? а это что "user2"

shevgenius
03-04-2017, 17:07
v.arnautov, подробно


@echo off

rem перебираем пользователей
if /i "%username%" equ "user1" goto linkPrint1 ; если %username% равно user1 перейти на linkPrint1
if /i "%username%" equ "user2" goto linkPrint2 ; если %username% равно user2 перейти на linkPrint2
if /i "%username%" equ "user3" goto linkPrint1 ; если %username% равно user3 перейти на linkPrint1 - так тоже можно
goto allend

:linkPrint1 ; просто метка
rundll32 printui.dll,PrintUIEntry /y /n "SharePrinterName1" ; поставить по умолчанию принтер SharePrinterName1
goto allend

:linkPrint2
rundll32 printui.dll,PrintUIEntry /y /n "SharePrinterName2" ; поставить по умолчанию принтер SharePrinterName2
goto allend

:allend


менять эти параметры:
user1 - имя пользователя, это Masha, Vasya
SharePrinterName1 - имя принтера, это, например "Kyocera Classic Universaldriver KPDL (A4 models)" и т.д.
linkPrint1 - это ссылка и метка внутри файла

p.s. чтобы работало к себе в файл копируйте без комментариев

v.arnautov
03-04-2017, 17:52
спасибо!

Iska
04-04-2017, 00:45
,но имена компьютеров неизвестны, у них случайные имена, половина пк работают на Маке половина на Убунту. »
Тут ровно одно имя — терминального сервера. Проверяется для того, чтобы работало только на конкретной машине.

DC есть, »
Ну, так и применяйте все возможности, доступные в доменной среде. На кой чёрт тогда лезть в реестр?!

if /i "%username%" equ "user2" goto linkPrint2 тут не понятно чутка, %username% - это имя учетки например Petya так? а это что "user2" »
«%username%» — разворачивается в имя текущего пользователя. «user2» — то, с чем надо сравнить имя текущего пользователя и, при совпадении, выполнить назначение для этого имени.




© OSzone.net 2001-2012