C# - 为 Active Directory 发布的打印机获取打印机 ACL

C# - Get Printer ACL for Active Directory published printers

在 C# 中枚举发布到 Active Directory 的打印机相当简单,并且没有问题。

我的实际问题是,我想根据打印机队列 ACL 将返回的打印机数量限制为我(或用户)有权访问的打印机。

正如这里已经提到的 How to programmatically search a printer in Active Directory 队列的实际 ACL(如果我被允许 print/manage 等)没有存储在 Active Directory 对象本身中。

调用所有实际打印机队列的第二个循环也可以,但我还没有找到如何访问远程打印机队列 ACL。

一旦我拥有所有 AD 发布的打印机,关于如何调用打印机 object/extract ACL 的任何想法?

您可以使用 WMI。有两个 类 我会看:

  1. Win32_Printer 有一个 GetSecurityDescriptor() 方法。
  2. Win32_Share 有一个 GetAccessMask() 方法。

我不确定哪一个是正确的选择,但在两者之间我希望你会没事的。