2015-10-22 4 views
0

Перечисление принтеров в C#, которые публикуются в Active Directory, довольно просто и работает без проблем.C# - Получить ACL принтера для опубликованных принтеров Active Directory

Моя фактическая проблема заключается в том, что я хочу ограничить количество возвращенных принтеров теми, к которым я (или, соответственно, пользователь) имеет доступ на основе ACL очереди печати.

Как уже упоминалось здесь, How to programmatically search a printer in Active Directory фактический ACL очереди (если мне разрешено печатать/управлять и т. Д.) Не сохраняется в самом объекте Active Directory.

Второй цикл, вызывающий все текущие очереди принтера, тоже будет в порядке, но пока я не нашел, как попасть в очередь ACL удаленного принтера.

Любые идеи о том, как вызвать объект принтера/извлечь ACL, когда у меня есть все опубликованные AD принтеры?

ответ

0

Вы можете использовать WMI. Есть два класса, на которые я бы посмотрел:

  1. Win32_Printer имеет метод GetSecurityDescriptor().
  2. Win32_Share Метод GetAccessMask().

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

+0

Спасибо, номер 1 был именно тем, что я искал! Я думаю, это лучший способ, который может быть достигнут без наличия DACL, доступного через запрос AD. Но это делает трюк – schueric

Смежные вопросы