4

Мне нужно обновить разрешения принтера в скрипте, то есть сделать то же самое, что я бы сделал вручную:

  1. Апплет «Открытые устройства и принтеры»
  2. Дважды щелкните принтер по умолчанию (откройте его очередь)
  3. Перейти к принтеру -> Свойства
  4. В диалоговом окне свойств перейдите на вкладку Безопасность
  5. Изменить разрешения для всех пользователей (например, установите флажок « Управление разрешениями на документы» )

Как это сделать? Например, в PowerShell я могу сделать

Get-WmiObject -class win32_printer -filter Default=True

чтобы получить принтер по умолчанию, есть методы getSecurityDescriptor() и setSecurityDescriptor() но, например, эта команда:

(Get-WmiObject -class win32_printer -filter Default=True).getsecuritydescriptor().Descriptor

вернуть ноль, так что я не уверен, правильно ли я это делаю.

У кого-нибудь есть рабочий пример для установки разрешений принтера? Я на правильном пути, или я должен использовать что-то, кроме WMI полностью? Благодарю.

1 ответ1

1

Я не знаю PowerShell, я только сделал разрешения на принтер напрямую, используя .NET и WMI, и он может запутаться, так как разрешения составлены из SecurityDescriptor, который имеет свойство Descriptor, которое имеет свойство DACL, которое содержит один или более объектов Win32_ACE, каждый из которых содержит AccessMask, AceFlags и Trustree, который является объектом Win32_Trustee, в котором указано, к кому относится разрешение.

Там может быть дополнение PowerShell, которое упрощает настройку вышеупомянутого, альтернативно взгляните на инструмент командной строки SetACL, который вы можете вызвать из PowerShell.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .