如何查询Active Directory对象的有效权限?

时间:2011-11-30 15:51:07

标签: permissions active-directory exchange-server adsi

我正在尝试以编程方式确定当前用户是否对给定的Active Directory对象具有某些权限(特别是在这种情况下,我正在尝试确定用户是否具有另一个Exchange用户的“代理发送”权限或分发列表对象)。

我已经弄清楚如何使用ADSI访问ntSecurityDescriptor属性:我可以枚举IADsSecurityDescriptor的{​​{1}}属性中的ACE。但是:

  • 如何根据该数据确定受托人是否明确允许或拒绝“发送为”许可?
  • 如果通过群组成员资格间接授予权限,我该如何发现?我是否真的必须通过(递归)检查用户所属的所有组来自己解析有效权限?当然必须有一个API用于该任务......

FWIW,我使用ActiveDs.dll类型库在Delphi中编码(即本机Win32代码),因此特定于.NET的解决方案对我没有多大帮助,除非他们的源代码为我提供了如何做同样的线索本机代码中的东西。 PowerShell也是如此。


在任何人开始之前:我已经了解DiscretionaryACLPR_EMS_AB_PUBLIC_DELEGATES扩展MAPI属性。但是,这不是我追求的。这些属性引用“代表发送”-right(a.k.a。代表),而不是“发送为”权限,这是完全不同的事情。

1 个答案:

答案 0 :(得分:2)

以下是MSDN文章解释 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms675580(v=VS.85).aspx。附件示例显示了如何调用API。

相关问题