Как запросить действующие разрешения для объекта Active Directory?
Я пытаюсь программно определить, есть ли у текущего пользователя определенные разрешения для данного объекта Active Directory (в частности, в этом случае я пытаюсь определить, есть ли у пользователя разрешение "Отправить как" для другого пользователя Exchange или объекта списка рассылки).
Я уже понял, как получить доступ к ntSecurityDescriptor
атрибут с использованием ADSI: я могу перечислить ACE в IADsSecurityDescriptor
"s DiscretionaryACL
имущество. Но:
- Как определить из этих данных, разрешено ли разрешение "Отправить как" явно или нет доверенному лицу?
- Как я могу обнаружить это, когда разрешение было предоставлено косвенно через членство в группе? Должен ли я сам анализировать действующие разрешения путем (рекурсивно) проверки всех групп, в которые входит пользователь? Конечно, должен быть API для этой задачи...
FWIW, я кодирую в Delphi (то есть нативный код Win32), используя библиотеку типов ActiveDs.dll, так что решения, специфичные для.NET, не сильно мне помогут, если их исходный код не даст мне подсказки, как сделать то же самое в нативном код. То же самое касается PowerShell.
Прежде чем кто-либо начинает: я уже знаю о PR_EMS_AB_PUBLIC_DELEGATES
а также PR_EMS_AB_PUBLIC_DELEGATES_BL_O
Расширенные свойства MAPI. Тем не менее, это не то, что я после. Эти свойства относятся к праву "Отправить от имени" (иначе делегаты), а не к разрешению "Отправить как", что совершенно другое.
1 ответ
Вот статья MSDN, которая объясняет - http://msdn.microsoft.com/en-us/library/windows/desktop/ms675580(v=VS.85).aspx. Существует прикрепленный пример, который показывает, как вызвать API.