Есть ли способ разрешить обычным пользователям перезапускать (останавливать/запускать) диспетчер очереди печати?

Есть ли способ разрешить обычным пользователям перезапускать (останавливать/запускать) диспетчер очереди печати?

По какой-то причине несколько ноутбуков в нашей сети Wi-Fi часто теряют возможность печатать на устройстве, подключенном к серверу в сети. Перезапуск диспетчера печати на каждом ноутбуке решает проблему. Однако перезапуск службы диспетчера печати Windows (через или services.mscчерез net start/stopкоманду) требует административных прав.

Есть ли способ разрешить обычным пользователям перезапускать свою локальную службу спулера печати без необходимости повышения или административных привилегий? Например, через изменение политики?

решение1

Я в итоге использовал Метод 3Как предоставить пользователям права на управление службами в Windows 2000.

  1. Загрузить и установитьSubInACL.exe
  2. бегать"C:\Program Files\Windows Resource Kits\Tools\subinacl" /service Spooler /grant=<username>=TO

SubInACLработает на Windows 7.

Параметр предоставления Tпредназначен для start serviceдоступа, а Oпараметр — stop serviceдля доступа.

Теперь <username>можно:

  • бежать sc stop Spoolerиsc start Spooler
  • бежать net stop "Print Spooler"иnet start "Print Spooler"
  • используйте Restartкнопку на Print Spoolerэлементе вservices.msc

решение2

Попробуйте: SetACL: Управление ACL Windows http://sourceforge.net/projects/setacl/

SetACL + GUI = SetACL Studio http://helgeklein.com/setacl-studio/

решение3

Старая запись в блогеимеет правильное решение (см. раздел «Разрешить всем аутентифицированным пользователям перезапускать службу»). Выполните следующее один раз в командной строке с повышенными правами:

sc sdset Spooler "D:AR(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA) (A;;LCRPWP;;;AU)(A;;CCLCSWLOCRRC;;;IU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY) S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

Замените Spoolerна имя любой службы, которую пользователи должны перезапустить. Используйте остальную часть строки как есть. Я не знаю, что это значит, но это работает. :-)

Через несколько секунд вы увидите такой ответ:

[SC] SetServiceObjectSecurity SUCCESS

Теперь все аутентифицированные пользователи могут перезапустить службу.

решение4

Сначала проверьте и задокументируйте существующие разрешения по умолчанию.
В командной строке с повышенными привилегиями введите:

sc.exe sdshow spooler

Результаты:
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Ключ к прочтению вывода:

D: — Дискреционный ACL (DACL)
S: — Системный список контроля доступа (SACL)

Первая буква означает: разрешить (A) или запретить (D)

Следующий набор символов — назначаемые разрешения:

CC — SERVICE_QUERY_CONFIG (запрос настроек сервиса)
LC — SERVICE_QUERY_STATUS (опрос статуса сервиса)
SW — SERVICE_ENUMERATE_DEPENDENTS
LO — SERVICE_INTERROGATE
CR — SERVICE_USER_DEFINED_CONTROL
RC — READ_CONTROL
RP — SERVICE_START
WP — SERVICE_STOP
DT — SERVICE_PAUSE_CONTINUE

Список доверенных лиц длинный, но мы ищем аутентифицированных пользователей (AU), которые указаны в первых скобках.

Добавление разрешений RP, WP и DT для аутентифицированных пользователей (AU) должно решить проблему:

(A;;CCLCSWLOCRRCРППДТ;;;AU)

Чтобы установить эти разрешения, снова выполните команду из командной строки с повышенными привилегиями:

sc.exe sdset spooler "D:(A;;CCLCSWLOCRRCRPWPDT;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

Чтобы восстановить разрешения до значений по умолчанию, фактически лишив аутентифицированных пользователей возможности запускать/останавливать/приостанавливать/возобновлять службу спулера:

sc.exe sdset spooler "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

Большая заслуга в этом принадлежит IT Connect Вашингтонского университета.https://itconnect.uw.edu/wares/msinf/other-help/understanding-sddl-syntax/

Связанный контент