Как запросить действующие разрешения для объекта Active Directory? - PullRequest
9 голосов
/ 30 ноября 2011

Я пытаюсь программно определить, есть ли у текущего пользователя определенные разрешения для данного объекта Active Directory (в частности, в этом случае я пытаюсь определить, есть ли у пользователя разрешение «Отправить как» для другого пользователя Exchange илиобъект списка рассылки).

Я уже выяснил, как получить доступ к атрибуту ntSecurityDescriptor с помощью ADSI: я могу перечислить ACE в свойстве IADsSecurityDescriptor DiscretionaryACL.Но:

  • Как из этих данных определить, разрешено ли разрешение «Отправить как» явно или нет доверенному лицу?
  • Как мне это узнать, если разрешение имеетбыл предоставлен косвенно через членство в группе?Должен ли я сам анализировать действующие разрешения путем (рекурсивно) проверки всех групп, в которые входит пользователь?Конечно, должен быть API для этой задачи ...

FWIW, я кодирую в Delphi (т.е. родной код Win32), используя библиотеку типов ActiveDs.dll, поэтому решения, специфичные для .NET, выиграют 'Это действительно очень мне поможет, если их исходный код не даст мне подсказки, как сделать то же самое в нативном коде.То же самое касается PowerShell.


Прежде чем кто-либо начнет: я уже знаю о свойствах PR_EMS_AB_PUBLIC_DELEGATES и PR_EMS_AB_PUBLIC_DELEGATES_BL_O Extended MAPI.Тем не менее, это не то, что я после.Эти свойства относятся к праву «Отправить от имени» (иначе делегаты), а не к разрешению «Отправить как», что совсем другое.

1 Ответ

2 голосов
/ 03 декабря 2011

Вот статья MSDN, которая объясняет - http://msdn.microsoft.com/en-us/library/windows/desktop/ms675580(v=VS.85).aspx. Существует прикрепленный пример, который показывает, как вызывать API.

...