none
Доступ к автоматически подключаемым принтерам терминального сервера Windows 2003 RRS feed

  • Вопрос

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

    Где настраиваются разрешения? Нужно дать доступ к принтеру членам группы "Пользователи".

    Если это сделать через свойства принтера, то разрешения дейстуют только до закрытия сессии.

    В новой сессии они сбрасываются.
    24 апреля 2008 г. 12:55

Ответы

  • Мое решение данной задачи:

    1. Качаем утилиту setprinter.exe из Windows Server 2003 Resource Kit Tools

    http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

    1. Пишем скрипт. В моем случае скрипт проверяет  расшарен ли принтер и если нет, то расшаривает его и меняет права на принтер – Users и Power Users могут Print и Manage Documents.

    Текст скрипта:

     

    Set WshShell = CreateObject("WScript.Shell")

    ArgumentSec = " 3 pSecurityDescriptor=" & Chr(34) & "O:BAG:SYD:(A;OIIO;RPWPSDRCWDWO;;;BA)(A;;LCSWSDRCWDWO;;;BA)(A;CIIO;RC;;;CO)(A;OIIO;RPWPSDRCWDWO;;;CO)(A;;SWRC;;;PU)(A;CIIO;RC;;;PU)(A;OIIO;RPWPSDRCWDWO;;;PU)(A;;SWRC;;;BU)(A;CIIO;RC;;;BU)(A;OIIO;RPWPSDRCWDWO;;;BU)" &Chr(34)

    strComputer = "."

    Set objWMIService = GetObject( _

        "winmgmts:" & "{impersonationLevel=impersonate}!\\" _

        & strComputer & "\root\cimv2")

    Set colInstalledPrinters =  objWMIService.ExecQuery _

        ("Select * from Win32_Printer")

    For Each objPrinter in colInstalledPrinters

     

        If objPrinter.Shared = False Then

          DefPrint = objPrinter.Name

    WshShell.Run "setprinter " & Chr(34) & DefPrint & Chr(34) & ArgumentSec, 0, True

    WshShell.Run "setprinter " & Chr(34) & DefPrint & Chr(34) & " 2 " & Chr(34) & "pShareName=" & DefPrint & Chr(34) & Chr(32) & Chr(34) & "Attributes=+shared" & Chr(34), 0, True

     

        End If

     

    Next

     

    1. Скрипт необходимо запускать от пользователя с правами админа. Есть несколько вариантов решения данной проблемы:

    А) Через Run As… и передавать логин и пароль админа в зашифрованном виде.

    Б) Через Group Policy Preferences и Immediate Task. С наскоку запустить эту связку не удалось(http://social.technet.microsoft.com/Forums/ru-RU/windowsserverru/thread/19e131a3-5900-4671-8625-e1e03032329e), а разбираться в проблеме я не стал т.к. меня вполне удовлетворяет третий вариант “В”.

    В) Запуск скрипта от имени локального админа каждые 5 минут по расписанию.

     

    Если кто напишет свое решение проблемы, с удовольствием посмотрю. Спасибо Алфавиту за любезно предоставленные буквы! :)

    5 июля 2010 г. 10:48
  • А не проще воспользоваться утилитой SubInACL и раздать права примерно так

    subinacl /printer * /grant=servername\Remote Desktop Users=MP (или  /grant=servername\Remote Desktop Users=F)


    Dmitriy Poberezhniy (my web blog http://dimsan.blogspot.com)
    5 июля 2010 г. 11:51
    Отвечающий

Все ответы

  • Попробуйте установить нужные разрешения для принтера на клиентской машине. Если не ошибаюсь, принтеры мапятся в сессию с сохранением "локальных" разрешений
    24 апреля 2008 г. 13:10
  • Dmirk, пользователи работают на тонких клиентах с прошитой Windows CE. Так что, никаких "локальных разрешений" не существует. Домена нет.
    24 апреля 2008 г. 14:46
  • Тогда скорее всего никак. По большому счету принтеры заново создаются в каждой сессии с применением дефолтовых разрешений.
    Опишите подробнее задачу. Зачем иметь права доступа только пользователям? Быть может есть другое решение
    25 апреля 2008 г. 8:25
  • dmirk
    [q]По большому счету принтеры заново создаются в каждой сессии с применением дефолтовых разрешений.[/q]
    Вот и нужно изменить эти разрешения. Может можно использовать скрипт, дающий право доступа другим пользователям, когда принтер автоматически создается?

    [q]Зачем иметь права доступа только пользователям?[/q]
    Нужно чтобы на автоматически создаваемые принтеры могли печатать другие пользователи.
    А эти принтеры не видны другим пользователям (если они не члены групп "Администраторы" или "Опытные пользователи").
    25 апреля 2008 г. 10:37
  • С моей точки зрения,варианта два:
    1. Найти в реестре откуда берутся дефолтные права на принтер и откорректировать их
    2. Скрипт, использующий чтонть вроде cacls.exe для установки прав на принтер

    Конкретных мыслей по поводу первого и второго варианта пока нет

    25 апреля 2008 г. 12:49
  • На сервере должна быть группа Print Operators. Включите туда ваших терминальных пользователей.

     

    Хотя что-то не вижу прямых прав этой группы

    28 апреля 2008 г. 4:00
    Модератор
  • sie, эта групппа была проверена в первую очередь. Но увы Sad
    Не появляется принтер у членов этой группы.
    28 апреля 2008 г. 5:52
  •  

    А редиректятся принтеры к тонким клиентам напрямую подключенные? USB? Клиенты локальные или удаленные?

  • Уважаемые специалисты, прошу ответить на вопрос, поставленный в данной теме.

    Скомпоную вопрос:

     

    По умолчанию автоматически подключаемый принтер в терминальной сессии видит сам пользователь, члены группы "Администраторы" и "Опытные пользователи". Члены группы "Пользователи" эти примапленные принтеры не видят. Нужно сделать так, что бы и они их видели наравне с администраторами и опытными пользователями.

     

    Где настраиваются дефолтные права на доступ к этим примапленным принтерам? В каких ветках реестра?

     

    Если это сделать через свойства принтера, то разрешения действуют только до закрытия сессии, а в новой сессии они сбрасываются.

     

    Клиенты подключаются к серверу терминалов не из локальной сети. Домена нет.

    Добавление в группу “Print Operators” проблему не решает.

     

    Заранее спасибо!

    11 июня 2010 г. 10:29
  • Я у себя сразу снес Windows CE, поставил другой терминальный клиент. Это может не к месту будет сказано, но реальность суровее. :)
    Самое высшее наслаждение — сделать то, что, по мнению других, вы сделать не можете.
    14 июня 2010 г. 17:21
  • Мое решение данной задачи:

    1. Качаем утилиту setprinter.exe из Windows Server 2003 Resource Kit Tools

    http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

    1. Пишем скрипт. В моем случае скрипт проверяет  расшарен ли принтер и если нет, то расшаривает его и меняет права на принтер – Users и Power Users могут Print и Manage Documents.

    Текст скрипта:

     

    Set WshShell = CreateObject("WScript.Shell")

    ArgumentSec = " 3 pSecurityDescriptor=" & Chr(34) & "O:BAG:SYD:(A;OIIO;RPWPSDRCWDWO;;;BA)(A;;LCSWSDRCWDWO;;;BA)(A;CIIO;RC;;;CO)(A;OIIO;RPWPSDRCWDWO;;;CO)(A;;SWRC;;;PU)(A;CIIO;RC;;;PU)(A;OIIO;RPWPSDRCWDWO;;;PU)(A;;SWRC;;;BU)(A;CIIO;RC;;;BU)(A;OIIO;RPWPSDRCWDWO;;;BU)" &Chr(34)

    strComputer = "."

    Set objWMIService = GetObject( _

        "winmgmts:" & "{impersonationLevel=impersonate}!\\" _

        & strComputer & "\root\cimv2")

    Set colInstalledPrinters =  objWMIService.ExecQuery _

        ("Select * from Win32_Printer")

    For Each objPrinter in colInstalledPrinters

     

        If objPrinter.Shared = False Then

          DefPrint = objPrinter.Name

    WshShell.Run "setprinter " & Chr(34) & DefPrint & Chr(34) & ArgumentSec, 0, True

    WshShell.Run "setprinter " & Chr(34) & DefPrint & Chr(34) & " 2 " & Chr(34) & "pShareName=" & DefPrint & Chr(34) & Chr(32) & Chr(34) & "Attributes=+shared" & Chr(34), 0, True

     

        End If

     

    Next

     

    1. Скрипт необходимо запускать от пользователя с правами админа. Есть несколько вариантов решения данной проблемы:

    А) Через Run As… и передавать логин и пароль админа в зашифрованном виде.

    Б) Через Group Policy Preferences и Immediate Task. С наскоку запустить эту связку не удалось(http://social.technet.microsoft.com/Forums/ru-RU/windowsserverru/thread/19e131a3-5900-4671-8625-e1e03032329e), а разбираться в проблеме я не стал т.к. меня вполне удовлетворяет третий вариант “В”.

    В) Запуск скрипта от имени локального админа каждые 5 минут по расписанию.

     

    Если кто напишет свое решение проблемы, с удовольствием посмотрю. Спасибо Алфавиту за любезно предоставленные буквы! :)

    5 июля 2010 г. 10:48
  • А не проще воспользоваться утилитой SubInACL и раздать права примерно так

    subinacl /printer * /grant=servername\Remote Desktop Users=MP (или  /grant=servername\Remote Desktop Users=F)


    Dmitriy Poberezhniy (my web blog http://dimsan.blogspot.com)
    5 июля 2010 г. 11:51
    Отвечающий
  • А не проще воспользоваться утилитой SubInACL и раздать права примерно так

    subinacl /printer * /grant=servername\Remote Desktop Users=MP (или  /grant=servername\Remote Desktop Users=F)


    Dmitriy Poberezhniy (my web blog http://dimsan.blogspot.com)

    Может и проще, не знал про эту утилиту.

    Хотя особой разницы между вызовом в цикле утилиты setprinter и subinacl я не вижу, запись только попроще на первый взгляд.

    5 июля 2010 г. 12:24