По какой-то причине несколько ноутбуков в нашей сети Wi-Fi часто теряют возможность печатать на устройстве, подключенном к серверу в сети. Перезапуск диспетчера печати на каждом ноутбуке решает проблему. Однако перезапуск службы диспетчера печати Windows (через или services.msc
через net start/stop
команду) требует административных прав.
Есть ли способ разрешить обычным пользователям перезапускать свою локальную службу спулера печати без необходимости повышения или административных привилегий? Например, через изменение политики?
решение1
Я в итоге использовал Метод 3Как предоставить пользователям права на управление службами в Windows 2000.
- Загрузить и установитьSubInACL.exe
- бегать
"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/