5

I need to update printer's permissions in a script, i.e. do the same as I would manually do this way:

  1. Open Devices and Printers applet
  2. Double-click the default printer (open its queue)
  3. Go to Printer -> Properties
  4. In the properties dialog, go to Security tab
  5. Change permissions for Everyone (e.g., check Manage documents permissions)

How to do that? For example, in PowerShell, I can do

Get-WmiObject -class win32_printer -filter Default=True

to get the default printer and there are then methods getSecurityDescriptor() and setSecurityDescriptor() but for instance this command:

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

return null so I'm not sure if I'm doing it the right way.

Does anyone have a working example to set printer permissions? Am I on the right path or should I use something other than WMI entirely? Thanks.

Borek Bernard
  • 15,019

1 Answers1

1

I don't know PowerShell, I have only done printer permissions directly using .NET and WMI, and it can get messy as the permissions are made up of the SecurityDescriptor, which has a Descriptor property, which has a DACL property, which contains one or more Win32_ACE objects, each of which contains AccessMask, AceFlags, and Trustree which is a Win32_Trustee object which contains who the permission applies to.

There maybe a PowerShell addon that simplifies setting the above, alternatively take a look at the SetACL command line tool which you could call from PowerShell.

WhoIsRich
  • 464