是否可以通过组策略向客户端计算机上的所有打印机对象授予“管理打印机”权限?默认情况下,此权限似乎授予高级用户和管理员。我想将其授予域中的特定安全组。
在这种情况下,打印机是本地安装的(嗯,有些是网络打印机,但它们不受管理..驱动程序直接安装在客户端上)。
答案1
是的,使用启动脚本。
setprinter.exe,包含在 Windows 2003 资源工具包中。您可以使用:
设置打印机.exe 3 “pSecurityDescriptor=xxxxxxxxxx”
您需要遍历所有已安装的打印机,然后应用新的 ACL。这假设您可以对所有工作站上的所有打印机使用相同的 ACL。这可能不是问题,因为大多数人不会在本地打印机上使用自定义安全性。
“pSecurityDescriptor= 采用 SDDL 格式。使用 setprinter -examples 3 获取更多信息。
按照您想要的方式设置具有安全性的打印机,然后使用 setprinter -show PrinterName 3 获取如何应用 SDDL 的文本。
当每个人都拥有管理打印机权限并且所有其他权限都是通用默认权限时,命令和 SDDL 如下所示:
setprinter.exe 3 pSecurityDescriptor="O:BAG:DUD:(A;OIIO;RPWPSDRCWDWO;;;BA)(A;;LCSWSDRCWDWO;;;BA)(A;CIIO;RC;;;CO)(A;OIIO;RPWPSDRCWDWO;;;CO)(A;;LCSWSDRCWDWO;;;WD)(A;OIIO;RPWPSDRCWDWO;;;PU)(A;;LCSWSDRCWDWO;;;PU)"
所有内容都必须位于一行上。
以下是列出打印机的一些 PowerShell 代码:
获取 WMIObject Win32_Printer -ComputerName $env:computername | foreach-object{$_.Name}
因此执行该工作的命令是
获取 WMIObject Win32_Printer -ComputerName $env:computername | foreach-object{setprinter.exe $_.Name 3 pSecurityDescriptor="O:BAG:DUD:(A;OIIO;RPWPSDRCWDWO;;;BA)(A;;LCSWSDRCWDWO;;;BA)(A;CIIO;RC;;;CO)(A;OIIO;RPWPSDRCWDWO;;;CO)(A;;LCSWSDRCWDWO;;;WD)(A;OIIO;RPWPSDRCWDWO;;;PU)(A;;LCSWSDRCWDWO;;;PU)"}
再次强调,这必须是一行。