【发布时间】:2011-11-30 15:51:07
【问题描述】:
我正在尝试以编程方式确定当前用户是否对给定的 Active Directory 对象具有某些权限(特别是在这种情况下,我正在尝试确定该用户是否具有其他 Exchange 用户的“代理发送”权限或分发列表对象)。
我已经弄清楚如何使用 ADSI 访问 ntSecurityDescriptor 属性:我可以枚举 IADsSecurityDescriptor 的 DiscretionaryACL 属性中的 ACE。但是:
- 如何根据该数据确定受托人是否明确允许或拒绝“发送为”权限?
- 当通过组成员资格间接授予权限时,我如何发现这一点?我真的必须通过(递归地)检查用户所属的所有组来自己解析有效权限吗?当然,该任务必须有一个 API...
FWIW,我正在使用 ActiveDs.dll 类型库在 Delphi(即本机 Win32 代码)中进行编码,因此特定于 .NET 的解决方案对我没有太大帮助,除非它们的源代码为我提供了如何执行相同操作的线索本机代码中的东西。 PowerShell 也是如此。
在任何人开始之前:我已经知道 PR_EMS_AB_PUBLIC_DELEGATES 和 PR_EMS_AB_PUBLIC_DELEGATES_BL_O 扩展 MAPI 属性。然而,这不是我所追求的。这些属性指的是“代表发送”权限(也称为委托),而不是“代表发送”权限,这是完全不同的事情。
【问题讨论】:
-
@RRUZ :感谢您的介入,但我宁愿将 delphi-tag 排除在外,特别是因为一些能够回答这个问题的人甚至可能将它列入他们的忽略列表。我希望最终的解决方案同样适用于任何可以使用 COM 的编程语言。
-
Delphi 特有的后续问题在这里:stackoverflow.com/q/8524507/9784
标签: permissions active-directory exchange-server adsi