我正在尝试以编程方式确定当前用户是否对给定的 Active Directory 对象具有某些权限(特别是在这种情况下,我正在尝试确定用户是否具有另一个 Exchange 用户或通讯组列表对象的“发送为”权限)。
我已经想出了如何ntSecurityDescriptor
使用 ADSI 访问属性:我可以枚举IADsSecurityDescriptor
'sDiscretionaryACL
属性中的 ACE。但:
- 我如何从该数据中确定受托人是否明确允许或拒绝“发送为”权限?
- 当通过组成员身份间接授予权限时,我如何发现这一点?我真的必须通过(递归地)检查用户所属的所有组来自己解析有效权限吗?当然,该任务必须有一个 API ......
FWIW,我正在使用 ActiveDs.dll 类型库在 Delphi(即本机 Win32 代码)中进行编码,因此特定于 .NET 的解决方案对我没有太大帮助,除非它们的源代码为我提供了如何在本机中做同样事情的线索代码。PowerShell 也是如此。
在任何人开始之前:我已经知道PR_EMS_AB_PUBLIC_DELEGATES
和PR_EMS_AB_PUBLIC_DELEGATES_BL_O
扩展 MAPI 属性。然而,这不是我所追求的。这些属性指的是“代表发送”权限(又名代表),而不是“发送为”权限,这是完全不同的事情。