Мне нужно обновить разрешения принтера в скрипте, т.е. сделать то же самое, что я бы сделал вручную следующим образом:
- ОткрытьУстройства и принтерыапплет
- Дважды щелкните принтер по умолчанию (откройте его очередь)
- Идти кПринтер -> Свойства
- В диалоговом окне свойств перейдите кБезопасностьвкладка
- Изменить разрешения дляКаждый(например, проверитьУправление документамиразрешения)
Как это сделать? Например, в PowerShell я могу сделать
Get-WmiObject -class win32_printer -filter Default=True
чтобы получить принтер по умолчанию, есть getSecurityDescriptor()
и такие методы, setSecurityDescriptor()
но например эта команда:
(Get-WmiObject -class win32_printer -filter Default=True).getsecuritydescriptor().Descriptor
возвращает null, поэтому я не уверен, что делаю это правильно.
Есть ли у кого-нибудь рабочий пример настройки разрешений принтера? Я на правильном пути или мне следует использовать что-то другое, а не WMI? Спасибо.
решение1
Я не знаю PowerShell, я только делал разрешения для принтеров напрямую с помощью .NET и WMI, и это может быть запутанно, поскольку разрешения состоят изSecurityDescriptor, который имеетДескрипторимущество, которое имеетДАКЛсвойство, которое содержит один или несколькоWin32_ACEобъекты, каждый из которых содержитAccessMask, AceFlags и Trusttreeкоторый являетсяWin32_Trusteeобъект, содержащий информацию о том, к кому применяется разрешение.
Возможно, есть дополнение PowerShell, которое упрощает настройку вышеперечисленного, в качестве альтернативы взгляните наИнструмент командной строки SetACLкоторый вы можете вызвать из PowerShell.